- map不能跳出循環(huán),
- forEach跳出本次循環(huán)
使用return終止本次循環(huán),執(zhí)行下一次循環(huán)
let arr = [1, 2, 3];
arr.forEach((item, index) => {
if(item === 2) {
console.log('中止本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)')
return false;
}
console.log(index)
})
console.log('結(jié)束')
- forEach終止循環(huán)
因為forEach無法通過正常流程結(jié)束循環(huán),可以通過拋出異常的方式實現(xiàn)終止循環(huán)
let arr = [1, 2, 3];
try {
arr.forEach((item, index) => {
if(item === 2) {
throw new Error('End')
}
console.log(index)
})
} catch(e) {
if(e.message === 'End') throw e;
}
下表是JS中常用的實現(xiàn)循環(huán)遍歷的方法的跳出/結(jié)束遍歷的辦法:
| 方法 | break | continue | return/return false | return true |
|---|---|---|---|---|
| for | 結(jié)束循環(huán) | 跳出本次循環(huán) | 不合法 | 不合法 |
| forEach | 不合法 | 不合法 | 跳出本次循環(huán) | 跳出本次循環(huán) |
| for...in | 結(jié)束循環(huán) | 跳出本次循環(huán) | 不合法 | 不合法 |
| Array.map() | 不合法 | 不合法 | 跳出本次循環(huán) | 跳出本次循環(huán) |
| Array.some() | 不合法 | 不合法 | 跳出本次循環(huán) | 結(jié)束循序 |
| Array.every() | 不合法 | 不合法 | 結(jié)束循環(huán) | 跳出本次循環(huán) |
| Array.filter() | 不合法 | 不合法 | 跳出本次循環(huán) | 跳出本次循環(huán) |