JavaScript各种遍历方法的使用与效率介绍
来源:互联网 发布:单片机串口啥意思 编辑:程序博客网 时间:2024/05/16 04:46
javaScript语言中有很多不足,在他衍生的过程中,他也不断在做着优化,下面介绍一下JavaScript中的各种遍历方式以及他们的效率。
遍历我们最熟悉的就是for循环了。
for(let j = 0; j < arr.length; j++) {}
这里指出一点,ES6推出了let来声明变量,两者的区别如下:
var a = [];for(var/let i=0;i<10;i++){ a[i] = function(){ console.log(i); }}a[6](); //let 6 var 10
let 定义的i是只有在当前轮的循环有效,所以每一次i都是一个新的变量。不要问为什么当前有效还能记得上一轮循环的值,
这都是托JavaScript引擎的福。当然了使用let比var还有更多的好处,这里就不介绍了。想了解的可以参照阮大神的ES6入门。
回到for循环,效率无功无过,可以满足正常使用。
这里插一嘴,如果给一个数组遍历,不要把长度的计算公式写在i<10的位置,这样会减少一些计算量。
比如
for(let i=0,let len=array.length;i<len;i++){}
定义一个临时变量来存储长度。
下面我们说一说forEach循环
他是ES3中提出来的,实际上他的性能要比普通的for循环弱。由于传递的参数过多,本身数据结构也比较复杂。
[1,2,3].forEach(function(item,index,arr){console.log(arr[index])});
再说一说for in 循环
他在JavaScript 1.0中就提出来了。
在这里 顺便把for of 搬出来让他俩做一下比较,这样更加直观。这里指出,想使用for of循环,必须具备iterator接口,
原生具备接口的数据结构:Array
,Map
,Set
,String
,TypedArray
,函数的arguments
对象,NodeList
对象。
如果没有的,要在Symbol.iterator
属性上部署遍历器的生成方法(原生的足够我们消费,初期不用太关心)。
let arr = [3, 5, 7];arr.foo = 'hello';for (let i in arr) {console.log(i); // "0", "1", "2", "foo"}for (let i of arr) {console.log(i); // "3", "5", "7"}
由上述代码可知,for…in 只能获取对象的键名,无法直接获取键值。for…of读取键值。
可以借助,数组实例的entries和keys方法进行更多的操作例子如下。
for (let index of ['a', 'b'].keys()) { console.log(index);}// 0// 1for (let elem of ['a', 'b'].values()) { console.log(elem);}// 'a'// 'b'for (let [index, elem] of ['a', 'b'].entries()) { console.log(index, elem);}// 0 "a"// 1 "b"
回到效率,其实for in
在众多的循环中效率是最弱的,for of
效率优于for in
循环,但是效率仍然不及for
循环。
还有一种遍历的方式就是map了
arr.map((n)=>{ console.log(n);})
总的来说,使用优雅,但是效率不及forEach.
总结:无论循环次数如何,for循环效率最高,当执行次数较小,for each存在优势,但循环次数变大之后,变得很糟糕。
for of表现的比较稳健,循环次数大小不会有太大波动。(以上效率均为普通循环,无复杂操作)
- JavaScript各种遍历方法的使用与效率介绍
- Javascript递归与各种循环执行效率的比较
- JavaScript面向对象之----各种方法的创建以及使用以及介绍
- 效率较高的map遍历方法
- 遍历map效率最高的方法
- javascript的propertyIsEnumerable()方法使用介绍
- 二分法与简单遍历的效率比较
- 二分法与简单遍历的效率比较
- 使用Java程序连接各种数据库的方法介绍
- JavaScript forEach()遍历函数使用及介绍
- javascript数组基础和数组方法的各种使用
- 数组递增遍历与递减遍历的效率
- JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
- java ArrayList与LinkedList 使用for,forearch,Iterator的遍历效率
- 使用谓词(NSPredicate)来提高集合遍历与过滤查找的效率
- List遍历的各种方法示例
- 二叉树的各种遍历方法
- 二叉树的各种遍历方法
- 微信公众平台-测试号-测试接口的问题
- 均匀分布的期望与方差
- 网络编程之URL
- 剑指offer---包含min函数的桟
- 50道SQL测试题
- JavaScript各种遍历方法的使用与效率介绍
- Hightchart对数值进行格式化
- 房产中介的九大套路,要记住!防止吃亏上当。
- JAVA常用设计模式——策略模式
- 把指定文件夹下的照片,按日期归类
- MD5加密的简单java实现
- 2. 机器学习基石-When can Machine Learn?
- 【更新】在线文档查看器GroupDocs.Viewer 9月新版V17.9发布 | 附下载
- Python魔法_筛选符合条件的值