我有以下形式的对象数组

[
   {prop1: value1,
   banks:[{_id:value,property2:value2}]
}]


所以我想做的是通过搜索“ _id”值删除“ banks”属性中的一个元素,然后从banks数组中删除找到的元素

“ _id”属性具有唯一值,因此不会多次出现任何值

我这样做

$scope.account.banks.splice($scope.account.banks.indexOf(item),1);


有什么更好的办法吗?

最佳答案

您可以使用array.filter删除与item匹配的库。它仍然比手动循环要干净一些,但仍然有些冗长。我做了一个小测试用例来说明我在说什么。



var accounts = [{
   prop1: 'value1',
   banks:[{_id:0,property2:'sdfbra'},
          {_id:1,property2:'qwedfg'},
          {_id:2,property2:'gaasdf'},
          {_id:3,property2:'asdfaa'}]
}]

var item = {_id:1,property2:'qwedfg'};

accounts[0].banks = accounts[0].banks.filter(function(element){
  return element._id !== item._id;
});

console.log (accounts[0].banks);

10-07 14:40