通过以上 30 次运行测试(实际上为了得到比较稳定的数据, 摈弃了许多异常的测试数据), 我们发现在数组长度为10^6, 10^7, 10^8 时, 代码运行基本稳定. 各方法运行需要的时间大致排序如下:
1 |
|
根据统计数据, 可得这8个方法的运行速度大致排序为:
- for 与 do while
- forEach map every (这3个不相上下,可认为运行速度差不多)
- $.each
- $(e).each
- for in
我们翻看jquery代码就会知道, $.each方法内部通过调用for循环来实现, 而$().each
是先用jquery包裹数组对象, 然后再调用for循环, 因此后者效率略低于前者.
综上, 最佳遍历选手是 for/do while循环, 推荐大家优先考虑使用它. ( Firefox浏览器由于对forEach循环做了底层优化, 效率接近native,不在我们考虑范围内 ).