1.for循环在循环的时候

通过continue中断当次循环

通过break中断整个循环

通过retrun中断函数执行

2.es6的forEach/map循环只能通过return中断当次循环

//目的:数据匹配到了就中断循环
//结果:所有循环都执行了

let data = [1,2,3,4,5,6]
data.forEach((val,index,arr)=>{
    console.log(`当前第${index+1}循环执行了`)
    if(val>3){ //模仿真实场景条件匹配成功条件
        return 
    }
    console.log('val', val)
})

3.解决forEach无法中断循环:抛出异常

try{
    let data = [1,2,3,4,5,6]
    data.forEach((val,index,arr)=>{
        console.log(`当前第${index+1}循环执行了`)
        if(val>3){ //模仿真实场景条件匹配成功条件
            throw new Error();
        }
        console.log('val', val)
    })
}catch(e) {
   
}
console.log("继续执行")

4.思考:抛出错误这种写法不好,当遇到需要终止循环的时候,不应该使用forEach/map;可以使用js的for/for in等;或是es6针对数组的其他方法:

  • Array.prototype.every()
  • Array.prototype.some()
  • Array.prototype.find()
  • Array.prototype.findIndex()

以上方法返回truthy值以确定是否需要进一步的迭代

//1.every:一假即假,true则继续循环,false就不执行循环了
let data = [1,2,3,4,5,6]
data.every((val,index,arr)=>{
   console.log(val)
   return val<3
})
//结果:1 2 3, 并return false


//2.some: 一真即真,false则继续循环,true就不执行循环了
let data = [1,2,3,4,5,6]
data.some((val,index,arr)=>{
   console.log(val)
   return val>3
})
//结果:1 2 3 4, 并return true


//3.find: 找到就返回该值并退出循环
let data = [1,2,3,4,5,6]
data.find((val,index,arr)=>{
   console.log(val)
   return val>3
})
//结果:1 2 3 4, 并return 4

5.参考

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐