JavaScript 判断一个对象数组是否包含另一个数组的任何对象

Art*_*urJ 0 javascript arrays javascript-objects

给定以下两个数组对象:

let origArr = [ { value: 2, label: 'Dog' }, 
                { value: 4, label: 'Cat' },
                { value: 16, label: 'Horse' } 
              ]

let newArr = [
  { value: 2, label: 'Dog' },
  { value: 3, label: 'Bird' },
  { value: 0, label: 'Fish' }
]
Run Code Online (Sandbox Code Playgroud)

origArr返回仅包含和之间的差值newArr(即origArr元素不在其中)的新数组的最佳方法是什么newArr

在上面的示例中,我正在寻找一个名为的新数组diffArr = [4,16]

请注意:和value中的所有值都是唯一的origArrnewArr

不确定是否有ES2016的意思?

Ran*_*ner 5

您可以使用filtersome来完成这项工作。

let origArr = [ { value: 2, label: 'Dog' }, 
                { value: 4, label: 'Cat' },
                { value: 16, label: 'Horse' } 
              ]

let newArr = [
  { value: 2, label: 'Dog' },
  { value: 3, label: 'Bird' },
  { value: 0, label: 'Fish' }
]

const res = origArr.filter(x => !newArr.some(y => y.value === x.value));

console.log(res); // assuming you want the entire filtered objects

const justValues = res.map(x => x.value); // if you want just the filtered values

console.log(justValues)
Run Code Online (Sandbox Code Playgroud)

一些 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

过滤器 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter