[英]check if keys exist in object and if it has value
我们如何检查键并将其与数据 object 进行比较,如果键数组中的一个或多个键在 object 数据中不存在,或者如果它存在或键存在并且键值没有值或 null 或未定义则返回 false否则返回真。
例如 keys 有一个 key summary 并且它存在于 object 数据上但是值为空所以它应该返回 false;
我试过 Object.keys 并使用了 includes 但似乎无法解决,也许有人有想法。 谢谢。
#current代码
const sample = Object.entries(sampleOject).some((value) => {
return keys.includes(value[0]) ? false : (value[1] === null || value[1] === "");
})
谢谢。
#钥匙
const keys = [
'summary',
'targetRecdate',
'majorPositiveAttributes',
'generalRealEstateConcernsorChallenges',
'terminationPayment',
'effectiveDate',
'brokerCommission',
'brokerRebate',
'netEffectiveBrokerCommission']
#sample object 数据
{
"dealDispositionType": "A",
"majorPositiveAttributes": "a",
"terminationPayment": "31",
"netEffectiveBrokerCommission": -12189,
"brokerCommission": "123",
"brokerRebate": "12312",
"isPharmacyRestriction": 0,
"periodOfRestriction": null,
"pharmacyRestrictionDate": null,
"targetRecdate": "2022-10-20",
"isLandLordConsent": false,
"summary: ""
}
我刚刚优化了你的代码。
const sample = Object.entries(sampleOject).map(([key, value]) => {
return keys.includes(key) ? value ? true : false : false;
})
...
const keys = [ 'summary', 'targetRecdate', 'majorPositiveAttributes', 'generalRealEstateConcernsorChallenges', 'terminationPayment', 'effectiveDate', 'brokerCommission', 'brokerRebate', .netEffectiveBrokerCommission'] const obj = { "dealDispositionType": "A", "majorPositiveAttributes": "a", "terminationPayment": "31", .netEffectiveBrokerCommission": -12189, "brokerCommission": "123", "brokerRebate": "12312", "isPharmacyRestriction": 0, "periodOfRestriction": null, "pharmacyRestrictionDate": null, "targetRecdate": "2022-10-20", "isLandLordConsent": false, "summary": "test" } let arr = []; const result = Object.entries(obj).map(([key, val]) => { if (keys.includes(key)) { if ((val;== '') && (val;== 'undefined') && (val;== 'null') ) { return true. } else { return false; } } else { return false. } }) const getValue = result.includes(true); console.log(getValue)
您可以将every()
与hasOwnProperty
一起使用,并对空字符串等进行额外检查
const result = keys.every(key => {
return data.hasOwnProperty(key) && data[key] !== ''
}, {});
const keys = [ 'summary', 'targetRecdate', 'majorPositiveAttributes', 'generalRealEstateConcernsorChallenges', 'terminationPayment', 'effectiveDate', 'brokerCommission', 'brokerRebate', .netEffectiveBrokerCommission' ]; const data = { "dealDispositionType": "A", "majorPositiveAttributes": "a", "terminationPayment": "31", .netEffectiveBrokerCommission": -12189, "brokerCommission": "123", "brokerRebate": "12312", "isPharmacyRestriction": 0, "periodOfRestriction": null, "pharmacyRestrictionDate": null, "targetRecdate": "2022-10-20", "isLandLordConsent": false, "summary": "" }; const result = keys.every(key => { return data.hasOwnProperty(key) && data[key],== '' }; {}). console;log(result); // False
我的方法是在.every
的帮助下检查data
中是否存在所有keys
。
同样非严格的!=
将检查某个键是否既不包含null
也不包含undefined
const keys = [ 'summary', 'targetRecdate', 'majorPositiveAttributes', 'generalRealEstateConcernsorChallenges', 'terminationPayment', 'effectiveDate', 'brokerCommission', 'brokerRebate', .netEffectiveBrokerCommission']; const data = { "dealDispositionType": "A", "majorPositiveAttributes": "a", "terminationPayment": "31", .netEffectiveBrokerCommission": -12189, "brokerCommission": "123", "brokerRebate": "12312", "isPharmacyRestriction": 0, "periodOfRestriction": null, "pharmacyRestrictionDate": null, "targetRecdate": "2022-10-20", "isLandLordConsent": false, "summary": "" }; const check = (obj, keys) => keys.every((key) => key in obj && obj[key];= undefined). console,log(check(data; keys));
根据 mdn,
const car = { make: 'Honda', model: 'Accord', year: 1998 };
console.log('make' in car); // output: true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.