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


Posted in Javascript onNovember 13, 2018

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);
});

总结

以上所述是小编给大家介绍的JavaScript使用类似break机制中断forEach循环的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript入门教程(2) JS基础知识
Jan 31 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 Javascript
JQury slideToggle闪烁问题及解决办法
Jul 05 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
jQuery ajax应用总结
Jun 02 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
简单了解微信小程序的目录结构
Jul 01 Javascript
vue+layui实现select动态加载后台数据的例子
Sep 20 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
小程序登录态管理的方法示例
Nov 13 #Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 #Javascript
vue代码分割的实现(codesplit)
Nov 13 #Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
Nov 13 #Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 #Javascript
checkbox在vue中的用法小结
Nov 13 #Javascript
React父子组件间的传值的方法
Nov 13 #Javascript
You might like
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
python的re模块使用方法详解
2019/07/26 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
大学生自我鉴定
2013/12/08 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
Golang并发工具Singleflight
2022/05/06 Golang