在项目中遍历数组的时候,使用到了array.map
在循环里面需要进行判断,只要有一项满足条件就返回false
发现效果不对,debug一下才发现,return没有真正退出循环。
下面探索一下正确的跳出循环方案~~
1.map
使用return不能跳出循环
let arr = [1,2,3];
arr.map((item)=>{
if(item == 2){
return false
}
console.log(item)
})
使用break报错
let arr = [1,2,3];
arr.map((item)=>{
if(item == 2){
break;
}
console.log(item)
})
2.forEach
使用return不能跳出循环
let arr = [1,2,3];
arr.forEach((item)=>{
if(item == 2){
return false
}
console.log(item)
})
使用break报错
let arr = [1,2,3];
arr.forEach((item)=>{
if(item == 2){
break;
}
console.log(item)
})
3.every方法
判断数组中是否所有元素都满足条件
every()方法会遍历数组的每一项,如果有有一项不满足条件,则表达式返回false,剩余的项将不会再执行检测;如果遍历完数组后,每一项都符合条件,则返回true。
return true : 循环继续 当前元素满足条件,继续判断,如果循环执行完毕还是true,则every的返回值就是true
return false : 循环结束,当前元素不满足条件,every的返回值也是false
let arr = [1,2,3];
arr.every((item)=>{
if(item == 2){
return false
}
console.log(item)
})
4.some方法
判断数组中是否有满足条件的元素
return true : 循环结束,找到了满足条件的元素
return false : 循环继续,没找到循环继续,如果所有元素全部遍历还是没找到,最终结果为false
let arr = [1,2,3];
arr.some((item)=>{
if(item == 2){
return true
}
console.log(item)
})
5.for循环使用return 和 break 都可以跳出循环