打破内在的foreach循环

时间:2015-12-22 22:54:29

标签: javascript jquery

我试图使用JavaScript / jQuery打破内部foreach循环。

result.history.forEach(function(item) {
    loop2:
    item.forEach(function(innerItem) {
        console.log(innerItem);
        break loop2;
    });
}); 

这导致错误'Unidentified label loop2'。它似乎是在循环之前,这是其他问题所说的问题。

我做错了什么以及如何解决?

编辑:正确,foreach循环不能以这种方式中断,但是常规for循环可以。这是有效的:

                        result.history.forEach(function(item) {
                            loop2:
                            for (var i = 0; i < item.length; i++) {
                                var innerItem = item[i];
                                console.log(innerItem);
                                break loop2;
                            }
                        });

2 个答案:

答案 0 :(得分:5)

如果您需要打破迭代,请使用.every()代替.forEach()

someArray.every(function(element) {
  if (timeToStop(element)) // or whatever
    return false;
  // do stuff
  // ...
  return true; // keep iterating
});

您可以翻转true / false逻辑并改用.some();相同的基本想法。

答案 1 :(得分:3)

不能这样做。根据{{​​3}}:

  

除了抛出异常之外,没有办法停止或中断forEach()循环。如果你需要这样的行为,.forEach()方法是错误的工具,而是使用普通循环。如果要测试谓词的数组元素并需要布尔返回值,则可以使用every()或some()代替。