根据id从数组中删除对象

73

我有一个对象数组:

var myArr;

假设在页面加载时它包含10个具有以下结构的对象:

{
  Id:,
  Name:}

如何通过IdmyArr中删除一个对象?


在你的数组中找到具有该id的对象的索引,并将其从数组中移除。 - juvian
3个回答

75

试着这样做

var id = 2;
var list = [{
  Id: 1,
  Name: 'a'
}, {
  Id: 2,
  Name: 'b'
}, {
  Id: 3,
  Name: 'c'
}];
var index = list.map(x => {
  return x.Id;
}).indexOf(id);

list.splice(index, 1);
console.log(list);

JSFIDDLE

或者您可以使用.filter()

像这样:

var id = 2;
var list = [{
  Id: 1,
  Name: 'a'
}, {
  Id: 2,
  Name: 'b'
}, {
  Id: 3,
  Name: 'c'
}];
var lists = list.filter(x => {
  return x.Id != id;
})
console.log(lists);

演示


27

有两个解决方案,一个是创建新实例来演化,另一个则是改变数组的实例。

筛选:

idToRemove = DESIRED_ID;

myArr = myArr.filter(function(item) {
    return item.Id != idToRemove;
});

正如您所看到的,filter方法返回过滤后的新数组实例。

第二种选择是找到项目的索引,然后使用splice将其删除:

idToRemove = DESIRED_ID;

index = myArr.map(function(item) {
    return item.Id
}).indexOf(idToRemove);

myArr.splice(index, 1);

6

你能试试吗?

newArray = myArr
  .filter(function(element) {
    return element.id !== thisId;
  });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接