zoukankan      html  css  js  c++  java
  • js中跳出forEach循环

    缘由近期在项目中使用lodash.js中的_.foreach方法处理数据,需要在满足条件时结束循环并不执行后面的js代码。

        因为foreach中默认没有break方法。在尝试中使用了return false;发现并不成功。

    总结:

    错误方法:return false;//仍然会执行完循环,但不再执行循环后面的js代码

    _.forEach(tmArray, function (value, index, collection) {
       let temp = tmArray[index];
       _.forEach(tmArray, function (v2, index2, coll2) {
         if (index2 != index) {
         if (_.intersection(temp, tmArray[index2]).length > 0) {
         top.Dialog.alert("第" + (index + 1) + "条计划与第" + (index2 + 1) + "条计划周期有重叠,请重新设置!");
         return false;
       }
      }
     })
    });

    原因:foreach无法在循环结束前终止,return false只是结束了本次循环。

    正确方法:因为foreach无法通过正常流程终止,可以通过抛出异常的方法,强行终止。

     1 try {
     2     _.forEach(tmArray, function (value, index, collection) {
     3     let temp = tmArray[index];
     4     _.forEach(tmArray, function (v2, index2, coll2) {
     5        if (index2 != index) {
     6          if (_.intersection(temp, tmArray[index2]).length > 0) {
     7             top.Dialog.alert("第" + (index + 1) + "条计划与第" + (index2 + 1) + "条计划周期有重叠,请重新设置!");
     8             throw new Error("breakForEach");
     9             return false;
    10           }
    11         }
    12      })
    13     });
    14    } catch (e) {
    15      if (e.message!="breakForEach") throw e;
    16    }
  • 相关阅读:
    mysql 数据类型学习笔记(持续更新)
    datetime 和 timestamp 的区别
    Jupyter notebook 常用快捷键(持续更新)
    遍历SnoMed的multiHierarchy中给定概念的子概念
    Ramdom Walk with Restart
    矩阵和向量
    power-law
    一些SQL操作(收集)
    MySQL5.7.19-win64安装启动
    OO_UNIT1_SUMMARY
  • 原文地址:https://www.cnblogs.com/salmonLeeson/p/11321093.html
Copyright © 2011-2022 走看看