【发布时间】:2015-05-27 04:13:41
【问题描述】:
现在我有两个对象数组,
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来完成吗? -
如何使用
uniq做到这一点? -
定义“更好”。是不是更快?代码少?更容易维护? ;-)
标签: javascript arrays underscore.js lodash