OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

JavaScript使用类似break机制中断forEach循环


分享到


分类 JS学习   关键字 JavaScript   发布 ourjs  1542069544477
注意 转载须保留原文链接,译文链接,作者译者等信息。  
JavaScript数组对象,有一个forEach方法,可枚举每一个数组元素,但并不支持类似for循环的break语法,中断循环:

[1,2,3].forEach(function(item) {
    // if(!item) break; 不支持
});

解决办法,可抛出一个特殊异常,来中断forEach循环,原理:

var BreakException = {};

try {
  [1, 2, 3].forEach(function(el) {
    console.log(el);
    if (el === 2) throw BreakException;
  });
} catch (e) {
  if (e !== BreakException) throw e;
}

也可复写forEach方法:

// Use a closure to prevent the global namespace from be polluted.
(function() {
  // Define StopIteration as part of the global scope if it
  // isn't already defined.
  if(typeof StopIteration == "undefined") {
    StopIteration = new Error("StopIteration");
  }

  // The original version of Array.prototype.forEach.
  var oldForEach = Array.prototype.forEach;

  // If forEach actually exists, define forEach so you can
  // break out of it by throwing StopIteration.  Allow
  // other errors will be thrown as normal.
  if(oldForEach) {
    Array.prototype.forEach = function() {
      try {
        oldForEach.apply(this, [].slice.call(arguments, 0));
      }
      catch(e) {
        if(e !== StopIteration) {
          throw e;
        }
      }
    };
  }
})();

使用

// Show the contents until you get to "2".
[0,1,2,3,4].forEach(function(val) {
  if(val == 2)
    throw StopIteration;
  alert(val);
});

相关阅读: for in 比for loop慢至少20倍

社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 用JavaScript测试图像上两点之间的距离
  2. 用纯CSS改变html radio/checkbox默认背景颜色样式
  3. 用JavaScript实现basename获取路径中的文件名
  4. redis5.x新特性,Stream流数据类型使用简单教程
  5. css去掉table的td单元格的间距cellspacing,设置隔行显示不同背景颜色
  6. Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析
  7. bootstrap-datetimepicker时间日期范围选取组件使用说明及简单教程
  8. 用jQuery将JavaScript对象转换为querystring查询字符串
  9. 用JavaScript往select元素中添加new option下拉选项
  10. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - JS学习
  1. JavaScript如何快速高性能清空删除Array数组中的所有元素,并保持引用
  2. JavaScript无引用复制一个Array数组的每一个元素到另一个数组
  3. JavaScript使用类似break机制中断forEach循环
  4. 用jQuery将JavaScript对象转换为querystring查询字符串
  5. 用JavaScript往select元素中添加new option下拉选项
  6. bootstrap-datetimepicker时间日期范围选取组件使用说明及简单教程
  7. 用JavaScript实现basename获取路径中的文件名
  8. 用JavaScript测试图像上两点之间的距离
  9. JavaScript运算出现很多小数导致运算不精确的问题,用toFixed解决
  10. 使用Node.JS批量查找替换目录下文本文件中图片地址内容

 关键字 - JavaScript
  1. JavaScript的设计缺陷?浮点运算:0.1 + 0.2 != 0.3
  2. JavaScript不刷新查找当前网址上的querystring并修改查询字符串变量
  3. javascript将所有不确定个数的参数传递给另一个函数,将arguments转化为数组即可
  4. 使用Bootstrap、Electron和JavaScript开发桌面应用
  5. JavaScript如何快速高性能清空删除Array数组中的所有元素,并保持引用
  6. JavaScript无引用复制一个Array数组的每一个元素到另一个数组
  7. JavaScript使用类似break机制中断forEach循环
  8. 用JavaScript实现node.js中的path.join方法
  9. 用jQuery将JavaScript对象转换为querystring查询字符串
  10. 用JavaScript往select元素中添加new option下拉选项

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号