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 相关文章推荐
JS动画效果代码3
Apr 03 Javascript
QUnit jQuery的TDD框架
Nov 04 Javascript
javascript操作字符串的原生方法
Dec 22 Javascript
js实现无限级树形导航列表效果代码
Sep 23 Javascript
JS实现保留n位小数的四舍五入问题示例
Aug 03 Javascript
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
VUE 3D轮播图封装实现方法
Jul 03 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 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
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
js代码实现轮播图
2020/05/04 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
Python语言的12个基础知识点小结
2014/07/10 Python
Python中文字符串截取问题
2015/06/15 Python
Python 基础知识之字符串处理
2017/01/06 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python logging模块原理解析及应用
2020/08/13 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
请说出你所知道的线程同步的方法
2013/04/19 面试题
大型活动策划方案
2014/01/12 职场文书
运动会广播稿50字
2014/01/26 职场文书
黄河象教学反思
2014/02/10 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
五四青年节演讲稿
2014/05/26 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server