我编写了一个脚本来检查对象中是否有任何缺失的字段,然后返回具有缺失字段的项目的 ID。
它正在返回:
[ '222', '333' ]
我期望返回:
['333']
为什么它也返回222
id?
function returnMissingData(items) {
const missing = items.reduce(function(acc, item) {
const fields = [
'Cost',
'Name'
];
for(const key of fields) {
if (!item[key] || item[key] === undefined) {
acc.push(item.Id);
break;
}
}
return acc;
}, []);
return missing;
}
console.log(returnMissingData([
{
Id: "111",
Name: "Name 1",
Cost: 100,
},
{
Id: "222",
Name: "Name 2",
Cost: 0,
},
{
Id: "333",
Name: "Name 3",
}
]));
编辑:它必须有属性,并且不能为 false bool 值。
最佳答案
使用过滤器/映射的替代方法。
过滤器使用Array#some()
来查找任何丢失的键
function returnMissingData(items) {
const fields = ['Cost','Name'];
return items.filter(o => fields.some(k => !(k in o))).map(({Id}) => Id);
}
console.log(returnMissingData([
{
Id: "111",
Name: "Name 1",
Cost: 100,
},
{
Id: "222",
Name: "Name 2",
Cost: 0,
},
{
Id: "333",
Name: "Name 3",
}
]));
关于javascript - 关键 checkin 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55482491/