我试图使用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;
}
});
答案 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()代替。