zoukankan      html  css  js  c++  java
  • React前端js跳出ForEach循环的方式

    React前端js跳出ForEach循环的方式

    今天踩了一个前端的坑。当forEach循环中满足某个条件时候就不在循环了。内心第一反应 添加return false 或 return 搞定~ 但是代码他依旧继续循环。

    最后找到问题所在,forEach跳出的方法是throw err次才行,严格意义上说 map forEach 他们本身属于迭代行为 就不支持跳出的。当然这个throw err是使程序中断-跳出。

    总结了一下跳出所有循环的方法:

    1.使用try catch 跳出forEach循环

    try {
        var array = [1,2,3,4,5,6];
        // 执行到第3次,结束循环
        array.forEach((value)=>{
         console.log("value---->",value);
           if(value > 3){
             throw new Error("抛出异常跳出")
            }
        });
    } catch(e) {
        console.log(e)
    };

    2. 跳出for循环(没有return方法)

    • break 跳出所有循环
    for(var i=1;i<=10;i++) { 
        if(i==8) {  //等于8跳出
            break; 
        } 
      console.log(i) 
    }
    
    • continue 跳出当前循环,进入新的循环
    for(var i=1;i<=10;i++) { 
        if(i==8) {  //等于8跳出
            continue; 
        } 
      console.log(i) 
    }
    

    2.1.跳出 for in 循环(使用break)

    let arr = [1,2,3,4,5,6]
    for (let i in  arr){
        if(i > 3) {
            break
        }
        console.log(arr[i]) //1 2 3 4
    }

    3. every 当内部return false时跳出整个循环

    这个方法 说实在的我很少用 0-0 需要注意的是 every虽然通过return false 可以跳出循环,但是循环里面你还是要写return true 让他持续循环 不然就只执行一次

    //every()当内部return false时跳出整个循环
    let list = [1, 2, 3, 4, 5];
    list.every((value, index) => {
        if(value > 3){
            console.log(value)
            return false; 
        }else{
            console.log(value)
            return true; //当然这边如果你不写这一行 她也会跳出的 就是上面说的  return true  为了让他进入下一次勋魂
        }
    
    });

    4. some 当内部return true时跳出整个循环

    注意:return true 跳出整个循环 。 如果return false 跳出本次循环 和上面for break和continue方法相似

    let list3 = [1, 2, 3, 4, 5];
        list3.some((value, index) => {
            if(value === 3){
                return true;//当内部return true时跳出整个循环
            }
            console.log(value)// 1 2
        });

    5. ES6中 for of 跳出循环(使用break)

    let arr = [1,2,3,4,5]
    for (val of arr) {
    if(val > 3 ){
        break;
    }
    console.log("val===>",val) //1 23
    }
     
  • 相关阅读:
    blender+threejs
    170112、solr从服务器配置整合到项目实战
    170111、MapperScannerConfigurer处理过程源码分析
    170110、Spring 事物机制总结
    170109、JSONP是什么
    170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i
    170105、MySQL 性能优化的最佳 20+ 条经验
    170104、js内置对象与原生对象
    170103、Redis官方集群方案 Redis Cluster
    161230、利用代理中间件实现大规模Redis集群
  • 原文地址:https://www.cnblogs.com/owenma/p/13633667.html
Copyright © 2011-2022 走看看