找出两个数组之间的差异

时间:2017-06-09 13:51:38

标签: javascript html arrays lodash

我跟随Plunkr完美运作。

https://plnkr.co/edit/WDjoEK7bAVpKSJbAmB9D?p=preview

它使用lodash的_.differenceWith()函数,以便两个保存所有数组值,这两个数组不包含这些值。

var result = _.differenceWith(data, test, _.isEqual);

现在我有两个问题:

1。)在我们的项目中,我们使用较旧的Lodash版本,其中功能差异没有实现

2.)我只需要比较数组的一个值。这当前比较了完整的对象。我只需要比较id属性。

1 个答案:

答案 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);