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 相关文章推荐
Z-Blog中用到的js代码
Mar 15 Javascript
精通JavaScript 纠正 cleanWhitespace函数
Mar 11 Javascript
JS面向对象编程 for Cookie
Sep 19 Javascript
用js实现控件的隐藏及style.visibility的使用
Jun 14 Javascript
2则自己编写的jQuery特效分享
Feb 26 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
jquery-ui 进度条功能示例【测试可用】
Jul 25 jQuery
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
react使用CSS实现react动画功能示例
May 18 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 多个submit提交表单 处理方法
2009/07/07 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP积分兑换接口实例
2015/02/09 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python内置函数delattr的具体用法
2017/11/23 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
python中的for循环
2018/09/28 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
python pillow模块使用方法详解
2019/08/30 Python
python 项目目录结构设置
2020/02/14 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
大学毕业感言一句话
2014/02/06 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
个人借款协议书范本
2014/11/17 职场文书
婚前保证书范文
2015/02/28 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书