我有一个包含某些数字的数组和一个包含某些对象的数组,如下所示:
var names = [
{ id: 1, name: 'Alex'},
{ id: 2, name: 'John'},
{ id: 3, name: 'Mary'}
];
var blocked_ids = [1, 2];
现在我想从names数组中删除带有blocked_ids的对象。结果就是这样:
[
{ id: 3, name: 'Mary'}
]
正如您所见,ID为1和2的对象已消失,因为数组“blocked_ids”包含这些数字。 如果只有两个数组,我可以使用_.difference(),但现在我必须将blocked_ids与数组对象中的id进行比较。谁知道怎么做?
答案 0 :(得分:1)
假设您给出的block-ids
是一个ID数组,您可以使用reject
,如下所示
var arr = [ { id: 1,
name: 'Alex'},
{ id: 2,
name: 'John'},
{ id: 3,
name: 'Mary'}
];
var block_ids = [1,2];
var result = _.reject(arr, function (obj) {
return block_ids.indexOf(obj.id) > -1;
});
console.log(result);
答案 1 :(得分:0)
您可以使用_.reject
方法执行此操作。
例如:
_.reject(names, function(name) {
return blockedIds.indexOf(name.id) > -1;
});
请参阅此JSFiddle。
答案 2 :(得分:0)
纯ECMAScript解决方案:
names.filter(function(element) {
return blocked_ids.indexOf(element.id) === -1}
);