【发布时间】:2016-03-24 01:00:36
【问题描述】:
我有一个对象数组:
var myArr;
假设在页面加载时它包含 10 个具有以下结构的对象:
{
Id: …,
Name: …
}
如何通过Id 从myArr 中删除对象?
【问题讨论】:
-
在数组中找到具有该 id 的对象的索引并将其从数组中删除
标签: javascript arrays
我有一个对象数组:
var myArr;
假设在页面加载时它包含 10 个具有以下结构的对象:
{
Id: …,
Name: …
}
如何通过Id 从myArr 中删除对象?
【问题讨论】:
标签: javascript arrays
你可以试试
newArray = myArr
.filter(function(element) {
return element.id !== thisId;
});
【讨论】:
这样试试
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);
【讨论】: