繁体   English   中英

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

[英]What's the fastest way to remove an object from an array that has a specific property?

如何删除:

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

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

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

这仅适用于IE9 +

我认为最快的方法是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); }
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM