Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jquery或JavaScript从对象数组中删除对象数组_Javascript_Jquery_Arrays_Angularjs - Fatal编程技术网

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

使用Jquery或JavaScript从对象数组中删除对象数组,javascript,jquery,arrays,angularjs,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中删除所有a元素。 我试过: $scope.b = $scope.b.filter(function(i

可能是重复的,但我找不到。 我有两个对象数组:

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中删除所有a元素。 我试过:

$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

你可以这样做

// 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;
});

indexOf
正在查找对同一对象的引用-它们不是。是否要按
id
删除?或者,只有当
id
name
匹配时,按id排序才可以(用一些文本来填写此输入的所需长度),那么您的答案已经在下面了。:)@phari-它实际上是有效的,我是不是做错了什么事情,以至于它变对了亚历山大-你是万物之王!:)非常感谢@phari-嗯,它不是真正的“a”,而是用户,我从数据库中获取所有用户。我将上面的代码稍微修改为:userIds=users.map(…);并返回userid.indexOf(item.id)=-1;