场景
一般我们会使用forEach
之类的语法,进行数组遍历,并且在遍历时进行到某一步的时候进行业务代码编写,这个就意味着需要打断循环
例如:
let arr = [1, 2, 3]
arr.forEach((item, index)=>{
if (item == 2) {
// 业务逻辑编写s
}
})
语法
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)
})
并没有结束掉循环,而是继续打印了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)
}
在循环到item == 2
的时候终止了循环,所以没有了后续的打印
最后
官方给我们提供了一个方法来终止循环some()
,ervey()
// 使用 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
})