JavaScript中如何终止forEach循环

发布时间:2023年12月20日


一、介绍

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()

二、终止方法

2.1、抛出错误

当找到一个大于等于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) {

}

2.2、将数组长度设置成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
  }
})

2.3、将数组元素移除

当满足条件时,使用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)
  }
})

三、建议

建议使用forsome

在日常工作中,一般是不会出现一种情况是让你终止forEach循环的,如果有终止的情况,可以使用forsome方法。

3.1、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
  }
}

3.2、some

const array = [ -3, -2, -1, 0, 1, 2, 3 ]
 
array.some((it, i) => {
  if (it >= 0) {
    console.log(it)
    return true
  }
})

四、最后

本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注?,一起加油?

文章来源:https://blog.csdn.net/u012804440/article/details/135097626
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。