数组遍历速度&for循环速度

遍历是日常操作,这篇文章比较详细 循环遍历总结for/foreach/forin/forof/map/some/filter

总结:

  • 常规循环中,最快的是 for(j = 0,len=arr.length; j < len; j++) {}
  • for循环 的速度是最快的,是最老的循环,也是优化得最好的,其次是for-of这个是es6才新增的循环非常好用, 最慢for-in我们可以作一下速度排序
    for > for-of > forEach > filter > map > for-in

参考文章

关于速度方面的也很多,这个是我随便搜的:
js数组遍历的8种方法,包括伪数组

JavaScript 数组遍历方法的对比 (9种,带速度)

JS数组循环的性能和效率分析(for、while、forEach、map、for of)

for 遍历方法
const persons = ['郑昊川', '钟忠', '高晓波', '韦贵铁', '杨俊', '宋灿']
// 方法一
for (let i = 0; i < persons.length; i++) {
  console.log(persons[i])
}
// 方法二
for (let i = 0, len = persons.length; i < len; i++) {
  console.log(persons[i])
}
// 方法三
for (let i = 0, person; person = persons[i]; i++) {
  console.log(person)
}
// 方法四
for (let i = persons.length; i--;) {
  console.log(persons[i])
}
  • 第一种方法是最常见的方式,不解释。
  • 第二种方法是将persons.length缓存到变量len中,这样每次循环时就不会再读取数组的长度。
  • 第三种方式是将取值与判断合并,通过不停的枚举每一项来循环,直到枚举到空值则循环结束。执行顺序是:
    1. 第一步:先声明索引i = 0和变量person
    2. 第二步:取出数组的第i项persons[i]赋值给变量person并判断是否为Truthy
    3. 第三步:执行循环体,打印person
    4. 第四步:i++。
// 当第二步中`person`的值不再是[Truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)时,循环结束。方法三甚至可以这样写 
for (let i = 0, person; person = persons[i++];) { 
console.log(person) 
} 
  • 第四种方法是倒序循环。执行的顺序是
    1. 第一步:获取数组长度,赋值给变量i
    2. 第二步:判断i是否大于0并执行i--
    3. 第三步:执行循环体,打印persons[i],此时的i已经-1了
      从后向前,直到i === 0为止。这种方式不仅去除了每次循环中读取数组长度的操作,而且只创建了一个变量i。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容