我应该为JavaScript数组和对象使用哪个循环?

这个问题在这里已经有了答案:

  • 为什么在数组迭代中使用“for ... in”是一个坏主意? 25个答案

  • 我为你做了一个jsperf:

    http://jsperf.com/for-vs-for-in43

    基本上,它正在测试性能,当使用for(var i in array)时可以看到巨大的性能下降。

    话虽这么说,你souldn't放下forfor in


    我应该甩for

    你不应该。 for..in在用于循环数组时并不关心索引,它也会列出附加到该对象的属性。 坚持for对数组和for..in的对象。

    摘自MDN的摘录:

    for..in不应该用于迭代索引顺序非常重要的数组... ...不能保证for..in将以任何特定顺序返回索引,并且它将返回所有可枚举的属性...

    至于性能,我不会担心,因为for..in循环索引数组显然不被推荐。


    不能用于(i = 0; ...)用于对象属性,但是我可以在数组中使用for(var in ...),因为数组也是对象。

    您应该使用for是其他的答案已经状态。

    但是您可以使用Object.keys(yourObject)将对象的键列为数组,然后在该数组上使用for循环。

    var keys = Object.keys(myObject);
    for(var i = 0, key; key = keys[i]; i++) {
        //...
    }
    
    链接地址: http://www.djcxy.com/p/70021.html

    上一篇: Which for loop should I use for JavaScript arrays and objects?

    下一篇: JavaScript For