我跟随Plunkr完美运作。
https://plnkr.co/edit/WDjoEK7bAVpKSJbAmB9D?p=preview
它使用lodash的_.differenceWith()函数,以便两个保存所有数组值,这两个数组不包含这些值。
var result = _.differenceWith(data, test, _.isEqual);
现在我有两个问题:
1。)在我们的项目中,我们使用较旧的Lodash版本,其中功能差异没有实现
2.)我只需要比较数组的一个值。这当前比较了完整的对象。我只需要比较id属性。
答案 0 :(得分:3)
这会根据arr1
属性找到arr2
中不在id
的对象。
var arr1 = [ { "id": "1" }, { "id": "2" }, { "id": "3" } ];
var arr2 = [ { "id": "1" }, { "id": "2" } ];
var result = arr1.filter(o1 => arr2.filter(o2 => o2.id === o1.id).length === 0);
console.log(result);

请注意,此示例不需要lodash。
如果您想使用其他比较而非id
,则可以将o2.id === o1.id
部分更改为其他属性。
这是一个更通用的解决方案:
var arr1 = [ { "name": "a" }, { "name": "b" }, { "name": "c" } ];
var arr2 = [ { "name": "a" }, { "name": "c" } ];
function differenceWith(a1, a2, prop) {
return a1.filter(o1 => a2.filter(o2 => o2[prop] === o1[prop]).length === 0);
}
var result = differenceWith(arr1, arr2, 'name');
console.log(result);