Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:在数组上循环_Javascript_Loops_For Loop - Fatal编程技术网

JavaScript:在数组上循环

JavaScript:在数组上循环,javascript,loops,for-loop,Javascript,Loops,For Loop,得出在JavaScript数组上循环的最快方法是使用for-in循环的结论是错误的吗?例如: for (var index in items) { ... } 请参见中的,语句不应用于对数组或类似数组的元素进行迭代 此语句的目的是枚举对象属性 它不应用于类似数组的对象,因为: 不保证迭代顺序,数组索引可能不会以数字顺序访问 继承的属性也被枚举 要在数组上迭代,建议始终使用顺序循环 推荐条款: Edit:噢,我忘了提到这是完全有偏见的,因为表达式新数组(10000)只是用100

得出在JavaScript数组上循环的最快方法是使用for-in循环的结论是错误的吗?例如:

for (var index in items) {
    ...
}

请参见

中的
语句不应用于对数组或类似数组的元素进行迭代

此语句的目的是枚举对象属性

它不应用于类似数组的对象,因为:

  • 不保证迭代顺序,数组索引可能不会以数字顺序访问
  • 继承的属性也被枚举
要在数组上迭代,建议始终使用顺序循环

推荐条款:

Edit:噢,我忘了提到这是完全有偏见的,因为表达式
新数组(10000)
只是用
10000
作为
length
属性的值初始化数组对象,数字索引属性甚至不存在,这就是为什么它看起来是最快的,例如:

var a = new Array(10);
a.length; // 10
a.hasOwnProperty('0'); // false, the indexes don't even exist!
a.hasOwnProperty('1'); // false
//...
试试看,如果一个数组对象真的包含10000个元素,你会感到惊讶

是的,它可以是最快的,但是它不安全,而且对于in
循环来说也不是一个
,所以它确实是一个没有意义的点

在正确之前,速度不是问题:)


例如,在IE中测试:您会注意到顺序不正确。

它是否最快取决于实现。考虑到每个主要浏览器供应商都有自己的实现,再加上一个移动实现,再加上所有仍在使用的旧浏览器和beta浏览器演示下一代JavaScript引擎……目前“只有”大约30种不同的javascript实现。即使这是目前所有或大多数应用程序中速度最快的,javascript引擎仍在快速发展

这甚至假设javascript是您的瓶颈。这里有一个技巧——尽管javascript速度很慢,但它很少成为页面呈现的瓶颈。互联网传输速度和服务器响应时间往往是更重要的因素


也许最好先编写正确的代码。

这有点过时(只包括FF3.0和IE8b),但它相当全面

相反,条件简化的循环看起来最快:

var-len;而(len--){}

迭代的顺序并不重要,因为“index”将始终是枚举元素的数字索引。@snickerseremyfave-不,它不是。在IE中测试这个问题:+1你计算你回答这个问题的次数吗?:)@SnickersremyFave:忘了提及你的测试,编辑。@galambalazs:谢谢:),是的,很多次了,我会继续这样做,这是一个非常常见的反模式:(你为什么说它是最快的?对于一个10000个项目的数组,它可能会更快,但对于更多的现实场景,我不太确定:@Philippe-对不起,我是说关于他的具体测试,我更新了以澄清这一点,我的意图更多的是传达你不应该首先使用它,所以无论性能如何,如果它不正确也没关系。)首先,我不是。