[英]Find difference between two arrays
我关注了完美运行的Plunkr。
https://plnkr.co/edit/WDjoEK7bAVpKSJbAmB9D?p=preview
它使用lodash的_.differenceWith()函数,以便顺序保存两个数组中未包含的所有数组值。
var result = _.differenceWith(data, test, _.isEqual);
现在我有两个问题:
1.)在我们的项目中,我们使用了较旧的Lodash版本,其中未实现功能DifferenceWith
2.)我只需要比较数组的一个值。 当前,这将比较完整的对象。 我只需要比较id属性。
这将根据id
属性在arr1
中找到不在arr2
的对象。
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.