javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JS map与forEach无法跳出循环

JS中map与forEach无法跳出循环及every和some的使用

作者:JuS巨山超力霸

在我们平时使用习惯中,for循环里要跳出整个循环是使用break,但在数组中用forEach循环或者map如要退出整个循环使用break会报错,使用return也不能跳出循环,下面这篇文章主要介绍了关于JS中map与forEach无法跳出循环及every和some的使用的相关资料,需要的朋友可以参考下

前言

在项目中遍历数组的时候,使用到了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 都可以跳出循环

单层循环

1.for循环中return语句:会直接跳出循环,

因为js中for是没有局部作用域的概念的,所以只有把for循环放在函数中时,才可以在for循环中使用return语句。

 2.for循环中的break语句:和return一样会直接跳出循环

与return不同的是,使用break时,for循环可以不用一定放在函数中 ;

 多层循环:

1.return:和单层循环一样必须放在函数中,否则将会报语法错误

使用return会直接跳出函数

   var a=[1,2,3];
   var b=[4,5,6,7,8];
   function test(){
        for(var i=0;i<a.length;i++){
            for(var j=0;j<b.length;j++){
                if(b[j]==5){
                    // break
                    return;
                }else{
                    console.log(13);
                }
            }
            console.log(12);
        }
        console.log(14);
    }
    test();//打印结果为:13

使用return后,当b[j]=5的时候,会直接跳出函数,for循环后面的语句也不再执行;

2.break语句:和单层循环一样,可以可以不用放在函数中

但是在多层循环中与return不同的是,break不是跳出函数,而是跳出最里层的for循环,外面的循环和最外层for循环后面的语句也将继续执行

 var a=[1,2,3];
 var b=[4,5,6,7,8];
 function test(){
        for(var i=0;i<a.length;i++){
            for(var j=0;j<b.length;j++){
                if(b[j]==5){
                    break ;
                    // return;
                }else{
                    console.log(13);
                }
            }
            console.log(12);
        }
        console.log(14);
    }
    test();//打印结果为13 12 13 12 13 12 14

总结

到此这篇关于JS中map与forEach无法跳出循环及every和some的使用的文章就介绍到这了,更多相关JS map与forEach无法跳出循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文