我有两个包含对象的数组
var requiredfileds=[
{name:'CVR', value:'cvr_code'},
{name:'NODE POINT VAL', value:'node_point_val'},
]
第二个数组
var results = [
{name:'CVB', data:[12,11,233,445]}
{name:'CVR', data:[125,1,-45,4]}
]
现在我想检查以确保必填字段数组中的所有名称都在结果数组中。所以从上面的两个例子中我希望它是错误的并且缺少必填字段是 {name:'NODE POINT VAL', value:'node_point_val'},
所以我已经尝试过(使用 es6)
this.is_valid = true;
this.requiredfields.forEach(field=>{
this.results.forEach(item=>{
this.is_valid = item.name === field.name;
})
})
但是上面的方法不起作用,我该如何进行
最佳答案
试试这个:filter
requiredfileds
通过应用回调函数。此回调函数测试是否 some
results
中的(任何)项目与 requiredfileds
中的 item
同名。
missing
中的结果是过滤后的数组,它不满足标准(存在于 requiredfileds
中但不存在,按名称,在 results
数组)。
如果您只是想知道是否存在缺失值,您可以像这样检查 missing
数组长度:!!missing.length
。
var requiredfileds = [{
name: 'CVR',
value: 'cvr_code'
},
{
name: 'NODE POINT VAL',
value: 'node_point_val'
},
];
var results = [{
name: 'CVB',
data: [12, 11, 233, 445]
}, {
name: 'CVR',
data: [125, 1, -45, 4]
}];
var missing = requiredfileds.filter(item => !results.some(resultItem => resultItem.name === item.name));
console.log('Any missing: ' + !!missing.length);
console.log(missing);
关于Javascript检查对象数组的每个元素是否包含在另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933217/