Javascript检查对象数组的每个元素是否包含在另一个数组中

标签 javascript arrays

我有两个包含对象的数组

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/

相关文章:

javascript - 为什么 'y' 在以下警报情况下显示两个不同的值?

javascript - 将项目迁移到使用 "strict mode"的步骤?

C 中的字符表示

arrays - 连接两个具有相同键的 json 对象

javascript - 删除第一个数组元素

java - 从排序数组中排除结尾零和重复元素

JavaScript: `if/else` 语句比中的条件语句更快吗?

javascript - 使用 jQuery,youtube url 必须放置在文本框中,url 内容将加载到 iframe 中

javascript - 如何将选项从 HTML 传递给 izimodal (JS)

php - 数组值意外变化