关于javascript:从JS数组中删除知道其ID的对象

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

如您所见,filter方法返回过滤数组的新实例。

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

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