JS如何终止forEach循环
我们都知道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 );
return true;
}
});