remove object from js array knowing it's Id
本问题已经有最佳答案,请猛点这里访问。
我在Razor视图中有一个对象数组(javascript代码)。
1 | var myArr; |
页面加载包含10个对象。
一个对象具有以下结构
1 2 | - Id - Name |
我如何从JS数组中删除知道ID的对象?
像这样尝试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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(jsfiddle)
或者可以使用.filter()。
这样地
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); |
imoB
两种解决方案,一种是发展创建新实例,另一种是更改阵列的实例。
过滤器:
1 2 3 4 5 | idToRemove = DESIRED_ID; myArr = myArr.filter(function(item) { return item.Id != idToRemove; }); |
如您所见,
第二种选择是找到项目的索引,然后用
1 2 3 4 5 6 7 | idToRemove = DESIRED_ID; index = myArr.map(function(item) { return item.Id }).indexOf(idToRemove); myArr.splice(index, 1); |
你能试试吗?
1 2 3 4 | newArray = myArr .filter(function(element) { return element.id !== thisId; }); |