Array.prototype.push与Array下标[i]生成数组性能上的差异

2019-09-242129次阅读javascript

在使用push的时候,每次JS需要先找到当前索引的最大值,再在此基础上生成新的索引值,然后对新的索引值进行赋值。而[i]则是直接对相应的索引赋值。

// 空数组模式 
  var start = new Date().getTime()
  var array = []
  for (let i=0; i<10000000; i++) {
    array.push(i)
  }
  var end = new Date().getTime()
  var cost = end - start
  console.log('cost:', cost)  // cost: 139

  // 指定长度数组模式 
  var start = new Date().getTime()
  var array = Array(10000000)
  for (let i=0; i<10000000; i++) {
    array[i] = i
  }
  var end = new Date().getTime()
  var cost = end - start
  console.log('cost:', cost)  // cost: 45

因此,对与JS的数组来讲,当操作大批量的元素的时候,直接根据下标操作,反而要比经过各种常见的迭代方法要快。

上一篇: Android浏览器下line-height垂直不居中的问题  下一篇: js判断当前窗口是否有父窗口  

Array.prototype.push与Array下标[i]生成数组性能上的差异相关文章