JavaScript使用类似break机制中断forEach循环的方法

 更新时间:2018年11月13日 16:41:53   作者:ourjs  
这篇文章主要介绍了JavaScript使用类似break机制中断forEach循环的方法,需要的朋友可以参考下

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的URL对象是什么

    聊一聊JavaScript的URL对象是什么

    这篇文章主要介绍了JavaScript的URL对象是什么,还有各个属性的具体实现方法,对JS URL感兴趣的同学,可以参考下
    2021-05-05
  • js实现简单手风琴效果

    js实现简单手风琴效果

    这篇文章主要为大家详细介绍了js实现简单手风琴效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 微信小程序接入腾讯云验证码的方法步骤

    微信小程序接入腾讯云验证码的方法步骤

    这篇文章主要介绍了微信小程序接入腾讯云验证码的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • canvas基础绘制-绚丽倒计时的实例

    canvas基础绘制-绚丽倒计时的实例

    下面小编就为大家带来一篇canvas基础绘制-绚丽倒计时的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 深入学习JavaScript ES8中的函数式编程

    深入学习JavaScript ES8中的函数式编程

    函数式编程已经成为现代JavaScript开发中的一种主要范式,它提供了一种更清晰、更模块化、更可维护的代码编写方式,本文将深入探讨ES8中的一些关键特性,并演示如何使用这些特性进行函数式编程实践,有需要的可以参考下
    2023-09-09
  • canvas知识总结

    canvas知识总结

    本文主要介绍了canvas的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 浅析js中substring和substr的方法

    浅析js中substring和substr的方法

    这篇文章主要介绍了js中substring和substr的方法,对substring和substr的方法进行描述和说明,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 微信小程序自定义底部导航带跳转功能

    微信小程序自定义底部导航带跳转功能

    这篇文章主要为大家详细介绍了微信小程序自定义底部导航带跳转功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • JavaScript仿支付宝6位数字密码输入框

    JavaScript仿支付宝6位数字密码输入框

    最近做了一个项目,涉及到某宝购物支付密码的输入框功能,下面小编把实现思路分享到脚本之家平台供大家参考
    2016-12-12
  • JavaScript 装逼指南(js另类写法)

    JavaScript 装逼指南(js另类写法)

    如何写JavaScript才能逼格更高呢?怎样才能、让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句原来还可以这样写呢?下面列出一些在JavaScript时的装逼技巧,也可说是非常实用的写法
    2020-05-05

最新评论