当前位置:  开发笔记 > 编程语言 > 正文

在JavaScript中执行循环的最佳方法是什么?

如何解决《在JavaScript中执行循环的最佳方法是什么?》经验,为你挑选了4个好方法。

我偶然发现了几种在JavaScript中循环的方法,我最喜欢的是:

for(var i = 0; i < a.length; i++){
    var element = a[i];
}

但是在这里进行了测试(http://www.robertnyman.com/2008/04/11/javascript-loop-performance/),应该编写它以便只计算一次长度.

在jQuery中有一个.each,你可以坚持一个功能.我喜欢这个更好一点,因为我不需要输入两次数组,就像上面的解决方案一样.

如果JavaScript支持宏,那么推出自己的宏将是件小事,但遗憾的是它没有.

那么你们用什么?



1> Ash..:

我已经开始使用相关的迭代器.性能是合理的,但更重要的是它允许您封装循环逻辑:

function createIterator(x) {
    var i = 0;

     return function(){
       return x[i++];
    };
}

然后使用:

var iterator=createIterator(['a','b','c','d','e','f','g']);

iterator();

返回"a";

iterator();

返回"b";

等等.

迭代整个列表并显示每个项目:

var current;

while(current=iterator())
{
    console.log(current);
}

请注意,上述内容仅适用于迭代包含"非虚假"值的列表.如果此数组包含以下任何一个:

0

""

空值

为NaN

上一个循环将停止在该项目,而不是总是你想要/期望的.

为避免这种用途:

var current;

while((current=iterator())!==undefined)
{
   console.log(current);
}


对不起,我想我有点习惯使用那些在你尝试访问数组末尾时尝试编写依赖于JS不会在你尝试做这个.

2> Chase Seiber..:

对原始的小改进,只计算一次数组大小:

for(var i = 0, len = a.length; i < len; i++){ var element = a[i]; }

另外,我看到很多for..in循环.虽然请记住它在技术上不是犹太洁食,并且会特别引起Prototype的问题:

for (i in a) { var element = a[i]; }


for..in循环用于遍历对象属性,尽管它们似乎适用于数组,但它们还将遍历'length'属性或任何其他动态添加的属性。这就是为什么它不能与原型一起很好地工作的原因。

3> Randy Sugian..:

首先将长度存储在变量中.

  var len = a.length;
  for (var i = 0; i < len; i++) {
    var element = a[i];
  }



4> Remy Sharp..:

我知道我迟到了,但我使用反向循环来进行不依赖于顺序的循环.

与@Mr非常相似.麝香鼠 - 但简化了测试:

var i = a.length, element = null;
while (i--) {
  element = a[i];
}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有