关于js数组动态赋值效率问题,有个不明白的~

jol_boy 2009-10-27 01:15:52
如下代码:

var a =[];
var tBegin=(new Date()).getTime();
for(var i=0;i<100000;i++)
{
a[i]=i;
//a.push(i);
}
var tEnd=(new Date()).getTime();
var tt="用了:"+(tEnd-tBegin)+"毫秒";


问题:
经过运行监测之后,发现,用a[i]=i;方式,不超过100毫秒,一般在96,98之间徘徊。
但是用push方式,要200毫秒以上。有明显的延缓。

疑惑:
那种效率高?用哪种方式更好?push有何优点?直接赋值有何缺点?
...全文
506 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
swandragon 2009-10-27
  • 打赏
  • 举报
回复
a[i]=i;
向数组元素赋值

a.push(i);
把参数添加到数组的尾部,并返回新的长度。

moliu 2009-10-27
  • 打赏
  • 举报
回复
谈笑有鸿儒,往来无白丁
sundotLei 2009-10-27
  • 打赏
  • 举报
回复
1楼已经说的清楚了,要更详细的可以去查下push的具体原理.

接分...
lovesiyile 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jol_boy 的回复:]
有无其他说法。。。。。等待有经验人解释一下~~~
[/Quote]
鄙视一把,什么叫有经验,
最简单直接的方法,你去jquery和Ext的源文件,是不是全使用的索引来访问
jol_boy 2009-10-27
  • 打赏
  • 举报
回复
有无其他说法。。。。。等待有经验人解释一下~~~
friendly_ 2009-10-27
  • 打赏
  • 举报
回复
a[a.length] = i;
a.push(i);
Formular1 2009-10-27
  • 打赏
  • 举报
回复
但是大数组push有优势。
spllot 2009-10-27
  • 打赏
  • 举报
回复
UP
BeenZ 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sohighthesky 的回复:]
你的测试已经有结果,实际上,用索引访问是比push方式效率要高,所以能用索引的尽量用索引,
push方式 的好处就是方便,可以不需要长度
[/Quote]
UPUPUP
sohighthesky 2009-10-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 jol_boy 的回复:]
如下代码:
JScript codevar a=[];var tBegin=(new Date()).getTime();for(var i=0;i<100000;i++)
{
a[i]=i;//a.push(i);}var tEnd=(new Date()).getTime();var tt="用了:"+(tEnd-tBegin)+"毫秒";

问题:
经过运行监测之后,发现,用a[i]=i;方式,不超过100毫秒,一般在96,98之间徘徊。
但是用push方式,要200毫秒以上。有明显的延缓。

疑惑:
那种效率高?用哪种方式更好?push有何优点?直接赋值有何缺点?
[/Quote]

你的测试已经有结果,实际上,用索引访问是比push方式效率要高,所以能用索引的尽量用索引,
push方式 的好处就是方便,可以不需要长度

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧