开发者问题收集

从 JS 对象数组中删除元素

2011-11-17
160

因此,我有类似这样的定义

var myList = [];  

//I populate it like this
myList.push({ prop1: value1, 
                      prop2: value2,
                      prop3: value3
});

是否可以根据 prop1 值从列表中删除项目,而无需搜索数组?

3个回答

不可以。您必须以某种方式循环遍历数组,检查其中每个对象的属性,并在遇到它们时执行删除操作。

JAAulde
2011-11-17

如下所示:

myList = myList.filter( function ( obj ) {
    return obj.prop1 !== value;
});

其中 value 是您要测试的值。

现场演示: http://jsfiddle.net/LBYfa/

因此,如果 'prop1' 属性的值等于您要测试的值,则 obj.prop1 !== value 的计算结果将为 false ,并且该元素将被过滤掉。

Šime Vidas
2011-11-17

这有帮助吗:

Array.prototype.remove = function(s) {
  var i = this.indexOf(s);
  if(i != -1) this.splice(i, 1);
}
Sudhir Bastakoti
2011-11-17