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 面向对象编程基础:继承
Aug 21 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
jquery改变tr背景色的示例代码
Dec 28 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
Dec 03 Javascript
Vue.js基础知识小结
Jan 13 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
小程序登录态管理的方法示例
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
数据库相关问题
2006/10/09 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
PHP编写RESTful接口
2016/02/23 PHP
PHP二维数组去重算法
2016/12/17 PHP
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
python将字符串转换成数组的方法
2015/04/29 Python
Python实现简单多线程任务队列
2016/02/27 Python
python中的字典操作及字典函数
2018/01/03 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python 元组操作总结
2019/09/18 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
毕业生就业自荐信
2013/12/04 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
诚信贷款承诺书
2014/05/30 职场文书
培训研修方案
2014/06/06 职场文书
应届生自荐书
2014/06/23 职场文书
社区娱乐活动方案
2014/08/21 职场文书
教师节倡议书
2014/08/30 职场文书
计生个人工作总结
2015/02/28 职场文书
汽车销售合同文本
2019/08/08 职场文书