簡體   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