前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 如何跳出(终止)forEach 循环

JavaScript 如何跳出(终止)forEach 循环

原创
作者头像
泯泷、
发布2024-03-11 01:16:59
2070
发布2024-03-11 01:16:59

在forEach中,不能使用 continue 和 break ,可以使用 return 或 return false 跳出循环,效果与 for 中 continue 一样,但是该方法无法一次结束所有循环。

如果直接使用 continue 或者 break 还会报错,如下所示:

代码语言:js
复制
[1,2,3].forEach(()=>{
    break;
})
// SyntaxError: Illegal break statement

即解释器无法确定break出去之后的位置。

代码语言:js
复制
[1,2,3].forEach(()=>{
    continue;
})
// SyntaxError: Illegal continue statement: no surrounding iteration statement

即语句并不在迭代语句内,不知道下一次循环在哪。

所以,不要将forEach语句等同for看待,那么我们来看看如何操作可以跳出循环:

跳出本次循环

forEach 跳出本次循环,使用return

代码语言:js
复制
    [1,2,3].forEach(function(item,index){
        if(item == 2){
            return
        }
        console.log(item)
    })

跳出整个循环

forEach 跳出整个循环,需要抛出异常,并且哪里捕获哪里之后再继续执行,例如:

代码语言:js
复制
try {
    [1,2,3].forEach(function(item,index){
        if(item == 2){
            thorw new Error(); //结束循环
        }
    })
} catch(e) {

}

跳出嵌套循环

代码语言:js
复制
try {
    [1, 2, 3, 4, 5].forEach(function (item, index) {

        try {
            [1, 2, 3, 4, 5].forEach(function (item, index) {
                if (item === 3) {
                    throw new Error(); //抛出异常
                }
            })
        } finally {
        }//try不能单独存在
        //内层的catch不能存在,不然会捕获异常,只结束内层forEach
    })
} catch (e) { //在最外层捕获异常,可结束整个嵌套循环

}

Tips

除了抛出异常以外,没有办法中止或跳出 forEach() 循环。如果你需要中止或跳出循环,forEach() 方法不是应当使用的工具。

若你需要提前终止循环,你可以使用:

  • 一个简单的 for 循环
  • for...of / for...in 循环

此外,这些数组方法则可以对数组元素判断,以便确定是否需要继续遍历:

  • every()every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
  • some()some() 方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。它返回的是一个布尔值。
  • find()find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
  • findIndex()findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

只要条件允许,也可以使用 filter() 提前过滤出需要遍历的部分,再用 forEach() 处理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 跳出本次循环
  • 跳出整个循环
    • 跳出嵌套循环
    • Tips
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档