在JavaScript中,向数组添加新元素的更有效方法是什么?

在JavaScript中,向数组添加新元素的更有效方法是什么?,javascript,Javascript,这是一个非常简单的问题。当向JavaScript数组的末尾添加元素时,这两种形式中的任何一种都比另一种形式具有速度优势或其他优化优势吗?或者,除了风格之外,这真的不重要吗 (1) pageData[pageData.length]=成员 (2) pageData.push(成员) 测试在以下浏览器中产生以下结果: 阵列。推送 谷歌Chrome 6.0.472.63:0.4ms Mozilla Firefox 3.6.10:5毫秒 苹果Safari 5.0(7533.16):2毫秒 Intern

这是一个非常简单的问题。当向JavaScript数组的末尾添加元素时,这两种形式中的任何一种都比另一种形式具有速度优势或其他优化优势吗?或者,除了风格之外,这真的不重要吗

(1) pageData[pageData.length]=成员


(2) pageData.push(成员)

测试在以下浏览器中产生以下结果:

阵列。推送

  • 谷歌Chrome 6.0.472.63:0.4ms
  • Mozilla Firefox 3.6.10:5毫秒
  • 苹果Safari 5.0(7533.16):2毫秒
  • Internet Explorer 8:21.7毫秒
  • Internet Explorer 7:66.7毫秒
  • 歌剧院10.62:2.7毫秒
数组[array.length]

  • 谷歌Chrome 6.0.472.63:1.2毫秒
  • Mozilla Firefox 3.6.10:0.9ms
  • 苹果Safari 5.0(7533.16):0.9ms
  • Internet Explorer 8:10.9毫秒
  • Internet Explorer 7:32.6毫秒
  • 歌剧院10:62:1毫秒
结果不言而喻:除了谷歌自己的浏览器外,在所有浏览器中使用索引都优于使用推送。如果交叉兼容性是您非常关心的问题,那么实用的方法是尽可能使用索引


来源:

为什么要麻烦?无论如何,你都不会注意到这个变化,我会选择第二个。这不仅仅是关于性能,而是推送更好,看一看,我认为这个问题表述不正确。比较单推指令和长度指令是没有意义的,因为两者都需要纳秒。只有在循环中添加元素时性能才重要,在这种情况下,
push
必须与同时添加/创建多个数组元素的函数相比较,比如
concat
split
match
,在循环中添加元素。请不要使用仅链接的答案-如果链接断开/页面移动,则您的答案将无效。不过,有趣的结果。谢谢