阅读 583

foreach无法return - 如何中断foreach循环

前言


数组的 forEach 用于循环遍历数据,会对数组中有效的每一项执行一次回调函数,但是在遍历回调中使用 break 或 continue 会报错,使用 return 也无法终止循环。

语法


Array.forEach((currentValue, index, array, thisArg) => {})

  • currentValue: 数组中正在处理的当前元素。
  • index(可选): 数组中正在处理的当前元素的索引。
  • array(可选): forEach() 方法正在操作的数组。
  • thisArg(可选): 当执行回调函数时用作 this 的值(参考对象)。

使用 break


let arr = [1, 2, 3]
arr.forEach(item => {
	if (item === 2) {
		break // 报错
	}
	console.log(item)
})
复制代码

使用 continue


let arr = [1, 2, 3]
arr.forEach(item => {
	if (item === 2) {
		continue // 报错
	}
	console.log(item)
})
复制代码

使用 return


let arr = [1, 2, 3]
arr.forEach(item => {
    if (item === 2) {
    	return
    }
    console.log(item)
})
复制代码

从图中可以看出 return 并没有终止 forEach 循环,还是继续循环打印出了 3 。

使用try...catch来终止循环

let arr = [1, 2, 3]
try {
	arr.forEach(item => {
		if (item === 2) {
			throw('循环终止')
		}
		console.log(item)
	})
} catch(e) {
	console.log('e: ', e)
}
复制代码

从图中可以看到,当循环到第二项时抛出了错误,从而使得forEach没有再进行下去

使用其他语法代替

// 使用 Array.some()
arr.some(item => {
	console.log('b: ',item) 
	return item === 2 // 当有数组有一项满足条件时结束并返回true
})

// 使用 Array.ervey()
arr.every(item => {
	console.log('c: ',item)
	return item !== 2 // 检查数字中是否每一项都满足条件,如果有一项不满足就结束循环并返回false
})
复制代码
关注下面的标签,发现更多相似文章
评论