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()
当找到一个大于等于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) {
}
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
}
})
当满足条件时,使用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
}
})
本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注?,一起加油?