JS之测试各种遍历对象的效率

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


测试各种遍历对象的效率

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>测试各种遍历对象的效率</title>
</head>

<body>
  <script>
    /* 
    测试: for...in / Object.keys & forEach
    耗时: 差不多
    */
    const obj = new Object();
    for (let i = 0; i < 100000; i++) {
      obj[i] = 1
    }

    // for..in 
    console.time() // 计时开始
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        // const element = obj[key];
      }
    }
    console.timeEnd() // 计时结束,算出时间差


    // Object.keys() + forEach
    console.time() // 计时开始
    Object.keys(obj).forEach(key => {
      // let element32 = obj[key]
    })
    console.timeEnd() // 计时结束,算出时间差
  </script>
</body>

</html>

测试各种遍历数组的效率

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>测试各种遍历数组的效率</title>
</head>

<body>
  <script>
    /* 
    测试: for...in / for / forEach / Object.keys&forEach / while / for...of
      耗时: keys&forEach | for...in | for..of >>> for | forEach | while
    */
    const arr = new Array();
    for (let i = 0; i < 100000; i++) {
      arr.push(1)
    }

    // for..in  // 会查找原型链
    console.time()
    for (const key in arr) {
      let element = arr[key];
    }
    console.timeEnd()

    //for
    console.time()
    for (let index = 0; index < arr.length; index++) {
      let element2 = arr[index];
    }
    console.timeEnd()

    // forEach
    console.time()
    arr.forEach(item => {
      let element3 = item;
    })
    console.timeEnd()

    // Object.keys() + forEach  额外多产生了一个数组
    console.time()
    Object.keys(arr).forEach(index => {
      let element32 = arr[index]
    })
    console.timeEnd()



    // while
    console.time()
    const length = arr.length
    let index = 0
    while (index++ < length) {
      let element4 = arr[index]
    }
    console.timeEnd()

    // for..of  // 会查找原型链
    console.time()
    for (const value of arr) {

    }
    console.timeEnd()
  </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值