从数组中删除知道其id的对象

Remove object from array knowing its id

本文关键字:id 对象 数组 删除      更新时间:2023-09-26

我有一个对象数组:

var myArr;

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

{
  Id: …,
  Name: …
}

如何通过对象的IdmyArr中删除对象?

像这样尝试

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

DEMO

两个解决方案,一个是进化创建新实例,另一个是更改数组的实例。

过滤器:

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

你能试试吗

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