js跳出forEach循环的骚姿势

在forEach中,不能使用 continue 和 break ,可以使用 return 或 return false 可中止本次执行,效果与 for 中 continue 一样。但无法一次结束所有循环。
forEach 只能通过 throw err 才可以~当然这个是使程序中断-算跳出 严格意义上说 map forEach 他们本身属于迭代行为 就不支持跳出的。

1.使用try catch 跳出forEach循环

try {
var array = [1,2,3,4,5,6];
// 执行到第3次,结束循环
array.forEach((value)=>{
console.log("value---->",value);
if(value > 3){
throw new Error("抛出异常跳出")
}
});
} catch(e) {
console.log(e)
};
复制代码本来就想记录一下这个的--想想还是补充一下其他的循环

2. 跳出for循环(没有return方法)

break 跳出所有循环

for(var i=1;i<=10;i++) {
if(i==8) { //等于8跳出
break;
}
console.log(i)
}
复制代码
continue 跳出当前循环,进入新的循环

for(var i=1;i<=10;i++) {
if(i==8) { //等于8跳出
continue;
}
console.log(i)
}
复制代码##2.1.跳出 for in 循环(使用break)
let arr = [1,2,3,4,5,6]
for (let i in arr){
if(i > 3) {
break
}
console.log(arr[i]) //1 2 3 4
}

复制代码##3. every 当内部return false时跳出整个循环
这个方法 说实在的我很少用 0-0 需要注意的是 every虽然通过return false 可以跳出循环,但是循环里面你还是要写return true 让他持续循环 不然就只执行一次
//every()当内部return false时跳出整个循环
let list = [1, 2, 3, 4, 5];
list.every((value, index) => {
if(value > 3){
console.log(value)
return false;
}else{
console.log(value)
return true; //当然这边如果你不写这一行 她也会跳出的 就是上面说的 return true 为了让他进入下一次勋魂
}

});
复制代码##4. some 当内部return true时跳出整个循环
注意:return true 跳出整个循环 。 如果return false 跳出本次循环 和上面for break和continue方法相似
let list3 = [1, 2, 3, 4, 5];
list3.some((value, index) => {
if(value === 3){
return true;//当内部return true时跳出整个循环
}
console.log(value)// 1 2
});
复制代码##5. ES6中 for of 跳出循环(使用break)
let arr = [1,2,3,4,5]
for (val of arr) {
if(val > 3 ){
break;
}
console.log("val===>",val) //1 23
}

作者:小人头
链接:https://juejin.cn/post/6844904040938078221
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

posted @ 2021-11-17 14:21  黑蛋的博客  阅读(2174)  评论(0编辑  收藏  举报