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 相关文章推荐
创建一个复制UBB软件信息的链接或按钮的js代码
Jan 06 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
Iframe实现跨浏览器自适应高度解决方法
Sep 02 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
JS拖拽组件学习使用
Jan 19 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
angularjs性能优化的方法
Sep 05 Javascript
在React项目中使用Eslint代码检查工具及常见问题
Oct 10 Javascript
vue项目从node8.x升级到12.x后的问题解决
Oct 25 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定时执行计划任务的多种方法小结
2011/12/19 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
python time.strptime格式化实例详解
2021/02/03 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
气象学专业个人求职信
2014/04/22 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
vue3中provide && inject的使用
2021/07/01 Vue.js