Underscore为阵列交集,差异和联合提供了便利的功能。但是他们没有像预期的那样工作:
var first = {val: 1};
var otherFirst = {val: 1};
var second = {val: 2};
_.difference([first, second], [otherFirst]); // result is [first, second] instead of [second]
这是因为JS检查对象的引用相等性。如何与两个对象数组相交?
我正在寻找某种惯用的解决方案。
答案 0 :(得分:2)
我有一些可以用于两个阵列的东西。
_.filter([first,second], function(obj){
return !_.findWhere([otherFirst], obj);
});
基本上它是什么,它检查array1中的对象是否不存在于array2过滤器中。
答案 1 :(得分:0)
使用remove
将起作用:
_.remove([first, second], otherFirst)