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 禁用IE工具栏,导航栏等等实现代码
Apr 01 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
JavaScript常用函数工具集:lao-utils
Mar 01 Javascript
jQuery删除节点用法示例(remove方法)
Sep 08 Javascript
基于vue.js实现侧边菜单栏
Mar 20 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
小程序click-scroll组件设计
Jun 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中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
pandas 选择某几列的方法
2018/07/03 Python
python时间日期操作方法实例小结
2020/02/06 Python
Python通过socketserver处理多个链接
2020/03/18 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
《骆驼和羊》教学反思
2014/02/27 职场文书
年度考核个人总结
2015/03/06 职场文书
边城读书笔记
2015/06/29 职场文书
2019学校运动会开幕词
2019/05/13 职场文书