美文网首页工作生活
数组遍历速度&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