阅读 5505

js跳出forEach循环的骚姿势

今天修改一个BUG。当forEach循环中满足某个条件时候就不在循环了。内心第一反应 添加return false 搞定~ 但是代码他依旧继续循环。。 我的表情是:

菜鸡
只能说自己是真菜。。需要努力把基础学扎实。。 然后就去度娘一下。。答案是 如果想跳出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
}
复制代码

这边记录一下。 平常天天用的方法 细节却有那么多。。自己需要努力学习~ 选择合适的方法处理需求~ 自己无聊写的小程序 欢迎提bug

文章分类
前端
文章标签