数组跳出循环,使用for,some,every

数组停止循环,使用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等迭代器的用法和区别,可见:

传送门

猜你喜欢

转载自blog.csdn.net/yangdl6/article/details/120394204