首页 > 编程知识 正文

js 基本数据类型和引用类型的区别(js数组遍历)

时间:2023-05-04 16:25:00 阅读:84075 作者:1284

作者:李春迪

资料来源: https://dailc.github.io/

前言

该篇与前面JS的几种变量交换方式和性能分析的比较属于同一个系列,本文将继续分析JS常用的几种数组扫描方式及其各自的性能比较

起由

上次分析了JS的几种常用变量交换方式及其各自的性能后,认为这种方式很好,试图提取核心逻辑,封装到模板中,扩展到一个系列。 本文是系列中的第二篇,JS序列遍历方式的分析比较

JS数组遍历的几种方式

JS序列遍历基本上是for、forin、foreach、forof、map等几种方法,本文介绍几种用于分析的序列遍历方法和轮廓比较

第一种:普通for循环

代码为以下:

for(j=0; 日本航空; j ) {2}

}

简单地说,是:最简单的,使用频率最高的,性能不弱,但还有优化的余地

第二种:优化版for循环

代码为以下:

for(j=0,len=arr.length ); 杰伦; j ) {2}

}

简单说明:使用临时变量缓存长度,以避免重复检索数组的长度。 排列较大时优化效果明显。

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

第三种:弱化版for循环

代码为以下:

for(j=0; arr!=空值; j ) {2}

}

简单地说,这种方法实际上也严格来说是for循环,不使用length判断,只不过是根据变量本身来判断

实际上,该方法的性能远远小于普通的for循环

第四种:foreach循环

代码为以下:

arr.Foreach (函数(e ) {

);

简单来说,数组中的foreach环路使用频率高,实际上性能比普通的for环路弱

第五种:foreach变种

代码为以下:

数组.属性.福雷斯.呼叫(数组,函数) El ) )。

);

简单地说,foreach是Array型附属的,不能直接使用非这种类型的,所以有NodeList等变种。 使用此变种,可以使类似的数组具有foreach功能。

实际性能比普通福克斯弱

第六种:forin循环

代码为以下:

for (日航) {

}

简单地说,这个循环被很多人喜欢,但实际上,经过分析测试,在很多循环路径方式中,

其效率最低

第七种:map遍历

代码为以下:

arr.map (函数(n ) {

);

简单地说,这种方式也使用得比较广泛,虽然使用得很优雅,但实际效率比不上foreach

第八种:forof遍历(需要ES6支持)

代码为以下:

for (联想集团) {

);

简单地说,在es6中使用,性能比forin好,但比不上普通的for循环

各种遍历方式的性能对比

上面列举的几种方式都进行了比较分析,但基本上可以得出:的结论

普通的for循环是最优雅的

(PS:以上的所有代码都只是进行了空循环,没有对内部执行代码进行再循环,只是分析了各个循环的时间。)

性能对比截图

分析结果1

以下的截图中的数据,是每次用chrome (支持es6 )执行100次的结果)执行10次,共计10个周期中得到的分析结果) )。

可以看到forin循环是最慢的。 优化的常规for循环是最快的

分析结果2

以下的截图数据是用chrome (支持es6 )执行1000次的结果)每次执行100次,共计10个周期中得到的分析结果) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。