使用Jquery或JavaScript从对象数组中删除对象数组

时间:2015-02-16 13:01:30

标签: javascript jquery arrays angularjs

可能重复,但我无法找到它。 所以我有两个对象数组:

var a = [{id: '1', name: 'bob'}, {id: '2', name: 'bill'}]
$scope.b = [{id: '4', name: 'jack'}, {id: '2', name: 'bill'}, {id: '1', name: 'bob'}, {id: '3', name: 'john'}]

我想从b中删除所有元素。 我试过了:

$scope.b = $scope.b.filter(function(item){
   return a.indexOf(item) === -1;
});

遗憾的是,由于某种原因,索引始终为-1,因此不会删除任何内容。 使用一些console.log -s

console.log(item);
console.log(a);
console.log(a.indexOf(item));

,这就是数据的样子:

Resource {id: 4, name: "jack"}
[Resource, Resource, Resource, Resource, $promise: Promise, $resolved: true]
-1

1 个答案:

答案 0 :(得分:2)

你可以这样做

// get all id's from a
var a = [{id: '1', name: 'bob'}, {id: '2', name: 'bill'}].map(function (el) {
    return el.id;
});

// search item.id in array with id's
$scope.b = $scope.b.filter(function(item){
   return a.indexOf(item.id) === -1;
});