数组停止循环,使用forEache 和map都不行
// forEach 中使用return false; 无法停止
let arrData = [1, 2, 3, 4, 5]
arrData.forEach(item => {
console.log(item)
if(item === 2) {
console.log("停止")
return false;
}
}) // 1 2 停止 3 4 5
// map 中使用return false; 也不能跳出循环
let arrData = [1, 2, 3, 4, 5]
arrData.map(item => {
console.log(item)
if(item === 2) {
console.log("停止")
return false;
}
}) // 1 2 停止 3 4 5
解决方案:使用for循环 ,some , every
// 使用for循环可以停止循环
let arrData = [1, 2, 3, 4, 5]
function checkArr() {
for(let i=0; i<arrData.length; i++) {
console.log(arrData[i])
if(arrData[i] === 2) {
console.log("停止")
return false;
}
}
}
checkArr();
// 1 2 停止 false
//使用some方法 retur true 可以跳出循环
let arrData = [1, 2, 3, 4, 5]
arrData.some(item => {
console.log(item)
if(item === 3) {
console.log("停止")
return true;
}
})
// 1 2 停止 true
// 使用every跳出循环,但是必须要写return true
let arrData = [1, 2, 3, 4, 5]
arrData.every(item => {
console.log(item)
if(item === 2) {
console.log("停止")
return false;
} else {
return true;
}
})
// 1 2 停止 false
关于some和every:
some(检测数组中是否有某些项符合条件,只要有一项符合了,马上return true,退出循环)跳出循环,需要写 “return true”,
every(检测数组中的每一项是否符合条件,只要不符合就返回false,退出循环)跳出循环,需要写“return true”
如需了解更新详细的map,reduce,forEach,some,every等迭代器的用法和区别,可见: