如何从 Javascript 中的嵌套 forEach 函数中中断 for in 循环?
How can i break a for in loop from nested forEach Function in Javascript?
我有一个循环
for (var key in params) {
if (Array.isArray(params[key])) {
params[key].every(function(item) {
let value = something(item.start, item.end);
if (value === item.start || value == item.end) {
return false // break
}
})
}
}
当我设置 return false
停止 every()
函数时,我也想停止第一个循环。我怎样才能做到这一点?我试过这个:
OUTER_LOOP: for (var key in params) {
if (Array.isArray(params[key])) {
params[key].every(function(item) {
let value = something(item.start, item.end);
if (value === item.start || value == item.end) {
return false // break
break OUTER_LOOP; // not working
}
})
}
}
但它不能以这种方式工作...所以我怎样才能正确地同时停止 every()
函数和第一个循环?
您可以使用 Array#some
和 return true
退出 some
并使用 some
的 returned 值来打破循环。
for (var key in params) {
if (Array.isArray(params[key])) {
const
leave = params[key].some(item => {
let value = something(item.start, item.end);
// exit condition should return true/truthy value
// for leaving the outer loop
return value === item.start || value == item.end;
});
if (leave) break;
}
}
我有一个循环
for (var key in params) {
if (Array.isArray(params[key])) {
params[key].every(function(item) {
let value = something(item.start, item.end);
if (value === item.start || value == item.end) {
return false // break
}
})
}
}
当我设置 return false
停止 every()
函数时,我也想停止第一个循环。我怎样才能做到这一点?我试过这个:
OUTER_LOOP: for (var key in params) {
if (Array.isArray(params[key])) {
params[key].every(function(item) {
let value = something(item.start, item.end);
if (value === item.start || value == item.end) {
return false // break
break OUTER_LOOP; // not working
}
})
}
}
但它不能以这种方式工作...所以我怎样才能正确地同时停止 every()
函数和第一个循环?
您可以使用 Array#some
和 return true
退出 some
并使用 some
的 returned 值来打破循环。
for (var key in params) {
if (Array.isArray(params[key])) {
const
leave = params[key].some(item => {
let value = something(item.start, item.end);
// exit condition should return true/truthy value
// for leaving the outer loop
return value === item.start || value == item.end;
});
if (leave) break;
}
}