首先,我就是一後端全棧,對前端也只是會用罷了。閒的無聊來測測,不深究,只看表面,不喜勿噴!前端
遍歷數組在寫 JS
代碼時候必定是常常用的,那麼怎麼遍歷能達到最高效率呢,不少人必定沒有測試過!後端
測試環境:Chrome 71.0.3578.80 + F12 開發者工具
數組
這次測試,我使用 6 種方法進行測試,它們分別是:2種 for
、forEach
、for in
、for of
以及map
。dom
var list = []; for(var i = 0; i < 100000; ++i) { list.push(Math.random()); } function test1(list) { var s = 0; for(var i = 0; i < list.length; ++i) { s += i; } return s; } function test2(list) { var s = 0; var count = list.length; for(var i = 0; i < count; ++i) { s += i; } return s; } function test3(list) { var s = 0; list.forEach(function(value){ s += value; }); return s; } function test4(list) { var s = 0; for(var i in list) { s += list[i]; } return s; } function test5(list) { var s = 0; list.map(function(value){ s += value; }); return s; } function test6(list) { var s = 0; for(let value of list) { s += value; }; return s; } console.time('list.length') test1(list); console.timeEnd('list.length'); console.time('count') test2(list); console.timeEnd('count'); console.time('forEach') test3(list); console.timeEnd('forEach'); console.time('for in') test4(list); console.timeEnd('for in'); console.time('map') test5(list); console.timeEnd('map'); console.time('for of') test6(list); console.timeEnd('for of');
list.length: 2.52294921875ms count: 2.19775390625ms forEach: 3.802978515625ms for in: 23.849853515625ms map: 33.470947265625ms for of: 7.194091796875ms
如下結論僅供參考,僅在單純遍歷數組時有效,若是有其它需求可能不適用,請自行取捨。工具
**性能最佳:**定義一個變量,把list.count
存起來,而後 <
這個變量做爲條件來循環。性能
固然,直接for
循環將list.count
做爲條件來循環,性能也不比上面的差多少,偷懶也是能夠用的。測試
forEach
、for of
性能也還行。code
for in
和 map
能不用盡可能不用,性能太差了!開發