开发者问题收集

Javascript:从对象数组中删除一个元素

2013-09-23
169

我有一个对象数组:

var items = [{ id: 1, text: "test1" }, { id: 2, text: "test2" }, { id: 3, text: "test3"}];

我有以下对象:

var itemToRemove = { id: 2, text: "test2" };

我想通过 id 检查 itemToRemove 是否存在于 items 数组中。

然后将其删除:

  // pseudo code
  items.remove(itemToRemove);

我尝试了 javascript 数组方法,但没有找到可以完成这项工作的方法。谢谢!

2个回答

使用 filter :

items.filter(function (item) {
    return item.id !== 2 || item.text !== "text2";
});

通常,改变原始数组不是一个好主意,否则我会推荐 Sirko 的答案。 filter 方法会生成一个全新的数组。它不会改变原始数组。

Aadit M Shah
2013-09-23

使用普通循环遍历数组,然后使用 splice() 删除匹配项:

for( var i=0; i<items.length; i++ ) {
  if( items[i].id == itemToRemove.id ) {
    items.splice( i, 1 );  // remove the item
    break; // finish the loop, as we already found the item
  }
}
Sirko
2013-09-23