突破内部foreach循环

Dav*_*ell 5 javascript jquery

我正在尝试使用JavaScript / jQuery突破内部的foreach循环。

result.history.forEach(function(item) {
    loop2:
    item.forEach(function(innerItem) {
        console.log(innerItem);
        break loop2;
    });
}); 
Run Code Online (Sandbox Code Playgroud)

这导致错误'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;
                            }
                        });
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 6

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

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

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

  • 只是作为后代的注解;这是ECMAScript 5.1及更高版本,因此IE9以下不支持。 (3认同)

Jos*_*eam 5

做不到。根据MDN

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