0%

JavaScript 如何跳出 forEach 的循环

js 跳出 forEach 循环

其实就是在 forEach 中实现了 continue 的功能
现在有一个二重循环

1
2
3
4
5
6
7
8
9
routeMsg.forEach((bigItem, index) => {
route.forEach(item => {
if (parseInt(bigItem.id) === parseInt(item.id)) {
status[index] = 1
} else {
status[index] = 0
}
})
})

需求要在外层的 item.id === 内层的 item.id 时 status[index] = 1
但是如果在 status[index] = 1 时不跳出循环的话,在下一次内层循环时,会执行 status[index] = 0,因为此时 index 是不会变的,所以就覆盖了上一次置 1 的数据.

JavaScript 中跳出 for 循环用的是 break, 但是 Array.forEach 却没有可以直接跳出循环的语句,需要在 forEach 外加上一层 try/catch, 然后在需要跳出循环的地方写 throw (new Error('continue')),这样代码就会跳出内层循环,外层循环的 index 也就会+1

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
routeMsg.forEach((bigItem, index) => {
try {
route.forEach(item => {
if (parseInt(bigItem.id) === parseInt(item.id)) {
status[index] = 1
throw (new Error('continue'))
} else {
status[index] = 0
}
})
} catch (err){
}
})