優化Javascript數據遍歷

4528krkj 8年前發布 | 700 次閱讀 JavaScript

問題

M是一個對象的集合,沒個對象擁有唯一的字符串類型的Id

N是Id的集合。

從M中過濾掉Id不在N中的對象。

假如M有50w個數據,N中可能是0~50w任意的數據。


方案1

使用數組保存Id的集合。

這樣就有兩種方式遍歷

1.1 

N = [id, ...];


for(var m in M)

   for(var n in N){

 .....

}

1.2

for(var m in M)

    if(N.indexOf(m.id) > -1){

}

方案2

使用“dict/map”來保存Id的集合

N = {{id:0}, ....};


2.1

//遍歷

for( var m in M)

   if(n[m.id] !== undefined){

....

}


結論

dict與array PK,結果顯而易見,速度2.1 > 1.2 > 1.1。


 本文由用戶 4528krkj 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!