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 form action动态修改方法
Nov 04 Javascript
javascript 变量作用域 代码分析
Jun 26 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
Feb 26 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
p5.js实现动态图形临摹
Oct 23 Javascript
Vue中插槽slot的使用方法与应用场景详析
Jun 08 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
PHP 数组基础知识小结
2010/08/20 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
分分钟入门python语言
2018/03/20 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
详解Python绘图Turtle库
2019/10/12 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
解决python 找不到module的问题
2020/02/12 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
银行财务部实习生的自我鉴定
2013/11/27 职场文书
党性教育心得体会
2014/09/03 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL