我们都知道for循环里要跳出整个循环是使用 break,但在数组中用forEach循环如果要退出整个循环使用break或者是return是否可以呢?
#使用break会报错:
var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
if(v == num){
break
}
console.log(v);
});
#使用return也不能跳出整个循环:
var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
if(v == num){
return;
}
console.log(v);
});
#解决方法:
1.使用 try...catch捕获异常实现:
try {
var array = [1, 2, 3, 4, 5];
array.forEach((item, index) => {
if (item == 3) {
//执行完1 2 之后就报错,就跳出循环了
throw new Error("ending"); //报错,就跳出循环
} else {
console.log(item);
}
})
} catch (e) {
if (e.message == "ending") {
console.log("结束了");
} else {
console.log(e.message);
}
};
2.使用arr.some() 或者 arr.every() 替代:
some()当内部 return true 时跳出整个循环:
var arr = [1,2,3,4,5];
var num = 3;
arr.some(item => {
if(item == num){
return true;
};
console.log(item);
});
every()当内部 return false 时跳出整个循环:
var arr = [1,2,3,4,5];
var num = 3;
arr.every(item => {
if(item == num){
return false;
}else{
console.log(item);
};
});