我有一个对象数组:
var myArr;
假设在页面加载时它包含10个具有以下结构的对象:
{
Id: …,
Name: …
}
如何通过Id
从myArr
中删除一个对象?
我有一个对象数组:
var myArr;
假设在页面加载时它包含10个具有以下结构的对象:
{
Id: …,
Name: …
}
如何通过Id
从myArr
中删除一个对象?
试着这样做
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);
或者您可以使用.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);
有两个解决方案,一个是创建新实例来演化,另一个则是改变数组的实例。
筛选:
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;
});