es6 forEach/map循环中断
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(`当前第${inde
·
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.参考
更多推荐
已为社区贡献1条内容
所有评论(0)