現在我有兩個對象數組,如何使用lodash或下劃線刪除兩個數組中的相同對象?
var arr1 = [{id: 0, name: 'Jack'}, {id: 1, name: 'Ben'}, {id: 2, name: 'Leon'}, {id: 3, name: 'Gavin'}];
var arr2 = [{id: 0, name: 'Jack'}, {id: 5, name: 'Jet'}, {id: 2, name: 'Leon'}];
我想刪除arr1
和arr2
的相同id
這些對象,所以結果是:
var arr1 = [{id: 1, name: 'Ben'}, {id: 3, name: 'Gavin'}];
var arr2 = [{id: 5, name: 'Jet'}];
如何使用lodash
或underscore
實現它?
這是我的實現。
arr1_ids = _.pluck(arr1, 'id');
arr2_ids = _.pluck(arr2, 'id');
same_ids = _.intersection(arr1_ids, arr2_ids);
arr1 = _.remove(arr1, function(e) { return !_.contains(same_ids, e.id); });
arr2 = _.remove(arr2, function(e) { return !_.contains(same_ids, e.id); });
有沒有什麼更好的方法來做到這一點?
不能用['.uniq'](https://lodash.com/docs#uniq)完成? – Dom
如何用'uniq'做到這一點? – zangw
定義「更好」。這是否更快?較少的代碼?更容易維護? ;-) – RobG