2024-03-21 跳出forEach迴圈的3個方法

哎呦你可棒棒了發表於2024-03-21

前言:return無法跳出forEach迴圈?

(() => {
    var a = [1, 2, 3, 4, 5];
    a.forEach((e, k) => {
    if (k == 2) return "";
    console.log(k);
    });
    console.log("======= forEach return 跳不出迴圈 =======");
    for (let index = 0; index < a.length; index++) {
    if (index == 2)
        return console.log("======= for return 跳出迴圈 =======");
    console.log(index);
    }
})();

方法一:try catch + throw Errow

(() => {
var a = [1, 2, 3, 4, 5];
try {
a.forEach((e, k) => {
if (k == 2) throw Error("跳出迴圈");
console.log(k);
});
} catch (error) {
console.error("error", error);
}
})();

方法二:設定陣列長度為0

(() => {
    var a = [1, 2, 3, 4, 5];
    a.forEach((e, k) => {
    if (k == 2) {
        console.log("跳出迴圈");
        return (a.length = 0);
    }
    console.log(k);
    });
})();

方法三:移除陣列元素

(() => {
    var a = [1, 2, 3, 4, 5];
    a.forEach((e, k) => {
    if (k == 2) {
        console.log("跳出迴圈");
        return a.splice(k + 1, a.length - 1);
    }
    console.log(k);
    });
})();

寫在最後:其實透過return是可以退出迴圈的,但是要改變陣列才能是迴圈停止,比如方法二、方法三,如果不加上return,那麼還是會繼續迴圈。

相關文章