跳出一个 _.each 循环

4

有可能跳出下划线each循环吗..?

_.each(obj, function(v,i){
  if(i > 2){
    break // <~ does not work
  }
  // some code here
  // ...
})

我能否使用其他的设计模式?


1
我不懂JavaScript,但是return不就可以了吗? - Pubby
@Pubby 它会返回,循环会继续,然后再次返回。我想要中断,并停止循环。 - Billy Moon
3
你可以尝试使用Array.every方法代替。 - oooyaya
@Pubby .each 方法必须查找并中断其正在执行的循环,否则它将继续执行。 - Ian
2
@jsalonen 为什么删除了你的回答 - 看起来是我正在寻找的答案 - 是否有问题? - Billy Moon
1
如果有人在意的话,jQuery的each函数确实可以让你做到这一点。如果你使用return false;,它会停止遍历值。 - Xymostech
2个回答

9

我认为你无法这样做,所以你只需要将函数的内容包装在 i < 2 中,或者使用 return。使用.some.every可能更有意义。

编辑:

//pseudo break
_.each(obj, function (v, i) {
    if (i <= 2) {
        // some code here
        // ...
    }
});

上述问题显然是需要执行整个循环,但这只是underscore的each方法的一个弱点。不过,你可以使用.every方法(本地数组方法或underscore的方法)来解决这个问题:
_.every(obj, function (v, i) {
    // some code here
    // ...
    return i <= 2;
});

一个 each 循环无法被中断 - 要中断,请使用 _.find - Billy Moon

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接