JS遍历数组及性能。

第一种:普通for循环

代码如下:

for(j = 0; j < arr.length; j++) { } 

说明:

最简单的一种,也是使用频率最高的一种,虽然性能可以,但仍然有优化空间,下面来看

第二种:优化后的for循环

代码如下:

for(j = 0,len=arr.length; j < len; j++) { }

说明:

使用临时变量将数组长度存储起来,避免重复获取数组长度,当数组中数据量较大时优化效果比较明显。

这种方法基本上是所有循环遍历方法中性能最高的一种

第三种:弱化版for循环

代码如下:

for(j = 0; arr[j]!=null; j++) {
   
}

说明:

这种方法其实严格上也属于for循环,只不过是没有使用length判断,而使用变量本身判断。

这种方法的性能要远远小于普通for循环

第四种:foreach循环

这里多说一句:foreach是原生js的方法,主要是针对数组遍历,each则是jquery中的方法,主要针对的是jquery对象,也就是当你通过jquery选择器得到一些DOM元素的集合使用each较为合适,当然each同样也可以对数组进行遍历。

代码如下:

arr.forEach(function(e){  
   
});

说明:

数组中自带的foreach循环,使用频率较高,实际上性能比普通的for循环弱。

第五种:forin循环

代码如下:

for(j in arr) {
   
}

说明:

这个循环很多人使用,但是经过测试,在众多的循环遍历方式中它的效率是最低的。

第六种:map遍历

代码如下:

arr.map(function(n){  
   
});

说明:

map函数在实际开发中用的也比较广泛,虽然用起来比较优雅,但实际上效率还比不上foreach。

第七种:forof遍历(es6支持)

代码如下:

for(let value of arr) {  
   
});

说明:

这种方式是es6中的,性能要比forin高,但是仍然比不上普通for循环。


总结:

forin循环最慢,优化后的普通for循环最快。

普通for循环才是最优秀的。

PS:有次朋友内推去他们公司面试,有个前端人员问我平常做循环的时候用foreach还是map,我说我很少用,我都是直接用for循环做遍历。后来我盆友回来告诉我他们那个前端说我代码太low,如果跟着他代码质量会有相当大的提高。当时我信了,但是我没去他们公司。。。。。。


猜你喜欢

转载自blog.csdn.net/qq_39645616/article/details/80668804