从具有特定属性的数组中删除对象的最快方法是什么?

时间:2015-03-07 22:21:17

标签: javascript arrays

如何删除:

var arr = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}, {a: 7, b: 8}];

b设置为2的数组中的对象

3 个答案:

答案 0 :(得分:2)

arr = arr.filter(function( a ) {
    return a.b !== 2;
});

这仅适用于IE9 +

答案 1 :(得分:1)

我认为最快的方法就是for循环,如果我错了,请纠正我......

var arr = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 5, b: 6}, {a: 7, b: 8}];

for(var i=0; i<arr.length; i++) {
    if(arr[i].b==2) { arr.splice(i,1); }
}

答案 2 :(得分:0)

根据jsperf,删除数组元素的最快方法是使用delete array[index]。资料来源:http://jsperf.com/object-delete-vs-array-splice-vs-array-delete

解决方案可能是:http://jsfiddle.net/no20bv5o/3/

但由于for循环和第二个数组的开销,它比前面提到的arr.filter()慢,如jsperf所示:http://jsperf.com/filter-array-by-element-attribute