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 相关文章推荐
二级域名或跨域共享Cookies的实现方法
Aug 07 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
Javascript Object.extend
May 18 Javascript
使用Firebug对js进行断点调试的图文方法
Apr 02 Javascript
Javascript继承(上)——对象构建介绍
Nov 08 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
Aug 04 Javascript
详细分析jsonp的原理和实现方式
Nov 20 Javascript
vue中引入第三方字体文件的方法示例
Dec 17 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
vue实力踩坑之push当前页无效
Apr 10 Vue.js
小程序登录态管理的方法示例
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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
使用python存储网页上的图片实例
2018/05/22 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
python中re模块知识点总结
2021/01/17 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
高中毕业自我鉴定
2013/12/22 职场文书
员工评语大全
2014/01/19 职场文书
社区母亲节活动方案
2014/03/05 职场文书
网络技术专业求职信
2014/07/13 职场文书
社会实践的活动方案
2014/08/22 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python