簡體   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