上一篇文章总结了js交换两个变量之间的值的11种方法和配置文件。 今天,我们将共享js数组遍历的八种方法和配置文件。 当然,直接看看内容吧。
JS序列遍历的几种方法
JS序列遍历基本上是for、forin、foreach、forof、map等几种方法,本文介绍几种用于分析的序列遍历方式和轮廓比较
第一个:常见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循环序列遍历
代码为以下:ARR.Foreach(function(e ) )
);
简要说明:
数组附带的foreach循环使用频率高,实际上性能比普通的for循环弱
第5种:foreach变种序列遍历
代码类似于: array.prototype.foreach.call (arr,function(El ) )。
);
简要说明:
由于foreach是Array类型的附带品种,不能直接用于非这种类型的品种(例如NodeList ),因此出现了这种变种。 使用此变种,可以使类似的数组具有foreach功能。
实际性能比普通的foreach弱
第6种:forin循环序列遍历
代码为以下:for(jinarr )。
}
简要说明:
这个循环很多人都喜欢用,但实际上,经过分析测试,在很多循环扫描方式中
其效率最低
第七类:map遍历
代码为以下: arr.map (功能(n ) )。
);
简要说明:
这种方式也比较广泛,用于优雅,但实际效率比不上foreach
第8类:forof扫描(需要ES6支持) ) ) ) ) ) ) ) )。
代码为以下:for(letvalueofarr ) :
);
简要说明:
这种方式在es6中使用,性能比forin好,但仍然比不上普通的for循环
各种遍历方式的性能比较
上述几种方式均进行了逐一对比分析,可以得出基本为:的结论
普通的for循环是最优雅的
(所有PS:或更高版本的代码都是空循环的,没有循环内部执行代码,只是分析每个循环的时间。)
性能比较屏幕截图
分析结果1
以下的屏幕截图数据是在chrome (支持es6 )中执行100次的结果)每次执行10次,共计在10个循环中得到的分析结果)
可见forin循环最慢。 优化的常规for循环是最快的
分析结果2
以下截图数据是在chrome (支持es6 )中执行1000次的结果)每次执行100次,共计10个循环中得到的分析结果)。
相关建议: