Lodash/javascript:比较两个集合并返回差异

Nac*_*ene 21 javascript arrays javascript-objects lodash

我有两个对象数组:

我的表的元素不是原始值,而是复杂的对象.

array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
Run Code Online (Sandbox Code Playgroud)

我想比较两个数组,看看数组2的元素已经存在于array1中,然后创建一个新的差异数组.

有什么建议吗?

sta*_*las 35

var presents = _.intersectionWith(array1, array2, _.isEqual);
var dif = _.differenceWith(array1, array2, _.isEqual);
Run Code Online (Sandbox Code Playgroud)


Ale*_*kov 20

ES6这就足够了:

array2.filter(e => !array1.includes(e));
Run Code Online (Sandbox Code Playgroud)

没有包括

array2.filter(e=> array1.indexOf(e) < 0);
Run Code Online (Sandbox Code Playgroud)

Plunker for you

  • 这还不够。您在 plunkr 中使用原始值,OP 不是 (4认同)

Mat*_*lli 5

_.difference只为您提供第一个数组中的元素而不是第二个数组中的元素,而不提供数组 2 中不在数组 1 中的元素。

这是您想要达到的目标吗?