• forEach陷阱


    前言:forEach没有返回值!!!设置了返回值也没有返回值。

    一、for循环的对比

        var arr = [1,2,3,4,5];
         
        function test(){
            for(var i =0; i<arr.length; i++){    
                if(arr[i]== 3){
                    return '找到3了,并终止了循环';
                }    
                console.log(arr[i]);
            }
        }
        test();

    运行结果:输出了1,2。 并且终止了循环。没有继续输出后面的4,5;

    ②、console.log(test());

    var arr = [1,2,3,4,5];
     
    function test(){
        for(var i =0; i<arr.length; i++){    
            if(arr[i]== 3){
                return '找到3了,并终止了循环';
            }    
            console.log(arr[i]);
        }
    }
    console.log(test());

    二、forEach循环的对比

    var arr = [1,2,3,4,5];
    function test2(){
        arr.forEach(function(item){
           if(item == 3) {
               return '找到3了,并跳过了本次循环';
           }
           console.log(item);
        });    
    }
    test2();
    

    运行结果:输出了1,2,4,5。 并没有终止循环,而是当item==3的时候,跳出了本次循环

    ②、console.log(test2());

     ②、console.log(test2());

    var arr = [1,2,3,4,5];
    function test2(){
        arr.forEach(function(item){
           if(item == 3) {
               return '找到3了,并跳过了本次循环';
           }
           console.log(item);
        });    
    }
    console.log(test2());

    运行结果:输出了1,2,4,5,undefined。 并没有输出我们需要的结果,而是返回了一个undefined。

    三、解决方案

     Array.some()的应用

    var arr = [1,2,3,4,5];
    function test3(){
        arr.some(function(item){
           if(item == 3) {
               return '找到了3,并终止了循环';
           }
           console.log(item);
        });    
    }
    console.log(test3());

    运行结果:输出了1,2,undefined。 终止了循环,但是没有输出我们需要的结果,而是返回了一个undefined。

     Array.every()结果和some()结果一样

    转自https://blog.csdn.net/w390058785/article/details/79916266

  • 相关阅读:
    codeforces 719A:Vitya in the Countryside
    POJ3233 Matrix Power Series
    codevs1409 拦截导弹2
    BZOJ1562 [NOI2009]变换序列
    POJ1325 Machine Schedule
    codeforces 715B:Complete The Graph
    BZOJ1972:[SDOI2010]猪国杀
    浅谈模拟
    BZOJ2548:[CTSC2002]灭鼠行动
    BZOJ1033:[ZJOI2008]杀蚂蚁
  • 原文地址:https://www.cnblogs.com/psxiao/p/11606447.html
Copyright © 2020-2023  润新知