在JavaScript中终止forEach循环的三种方式
一、序言
这个问题估计会难倒一部分同学。甚至会有人反问,forEach
循环在JavaScript中能终止吗? 比如 ,我举个例子
const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it) => { if (it >= 0) { console.log(it) // 0 1 2 3 return // or break } })
从这个例子来看,好像不管是通过return还是break都无法终止forEach循环。 forEach相当于就是函数的执行,比如下面这段代码,即使func1
执行了return语句,仍然会打印出2。
const func1 = () => { console.log(1) return } const func2 = () => { func1() console.log(2) } func2()
二、方法
然而,我能想到三种方式可以终止forEach循环。
01. 抛出错误
当找到一个大于等于0的数字之后,return循环将终止执行,所以控制台只会输出数字0,代码如下:
const array = [ -3, -2, -1, 0, 1, 2, 3 ] try { array.forEach((it) => { if (it >= 0) { console.log(it) // 输出:0 throw Error(`We've found the target element.`) } }) } catch (err) { }
02. 将数组长度设置成0
我们也能通过将数组长度设置成0来终止forEach循环。代码如下
const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it) => { if (it >= 0) { console.log(it) // 输出:0 array.length = 0 } })
03. 将数组元素移除
当满足条件时,使用splice方法将数组内元素移除,也能终止forEach循环。代码如下:
const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it, i) => { if (it >= 0) { console.log(it) // 输出:0 array.splice(i + 1, array.length - i) } })
三、建议
建议使用for和some
在日常工作中,一般是不会出现一种情况是让你终止forEach循环的,如果有终止的情况,可以使用for和some方法。
for
const array = [ -3, -2, -1, 0, 1, 2, 3 ] for (let i = 0, len = array.length; i < len; i++) { if (array[ i ] >= 0) { console.log(array[ i ]) break } }
some
const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.some((it, i) => { if (it >= 0) { console.log(it) return true } })
到此这篇关于在JavaScript中终止forEach循环的三种方式的文章就介绍到这了,更多相关JavaScript终止forEach循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
这篇文章主要介绍了Viewer这一款强大的 jQuery 图像浏览插件,在信息详情页面实现点击图片可以预览,脚本之家也是用的这个js,这里为分享一下使用方法,需要的朋友可以参考下2020-04-04bootstrap日期插件daterangepicker使用详解
这篇文章主要为大家详细介绍了bootstrap日期插件daterangepicker的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10
最新评论