美文网首页工作生活
数组遍历速度&for循环速度

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

作者: anddju | 来源:发表于2019-07-01 17:20 被阅读0次

遍历是日常操作,这篇文章比较详细 循环遍历总结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。

相关文章

网友评论

    本文标题:数组遍历速度&for循环速度

    本文链接:https://www.haomeiwen.com/subject/vkfncctx.html