繁体   English   中英

查找两个数组之间的差异

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM