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 相关文章推荐
jQuery控制输入框只能输入数值的小例子
Mar 20 Javascript
js捕获鼠标滚轮事件代码
Dec 16 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
Jul 10 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
JS高阶函数原理与用法实例分析
Jan 15 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 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写MySQL数据 实现代码
2009/06/15 PHP
php缓存技术详细总结
2013/08/07 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
js实现网页收藏功能
2015/12/17 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
给老婆的婚前保证书
2014/02/01 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
合伙购房协议样本
2014/10/06 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis