」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Node.js 中提前退出 forEach 迴圈?

如何在 Node.js 中提前退出 forEach 迴圈?

發佈於2024-11-08
瀏覽:241

How to Prematurely Exit a forEach Loop in Node.js?

如何中斷Node.js forEach 循環

在需要遞歸遍歷嵌套資料結構並對每個元素執行操作的情況下,您可以使用遞歸和forEach的組合。但是,在某些情況下,您可能需要提前退出 forEach 迴圈。

與 break 或 continue 語句的常規迴圈不同,forEach 缺乏停止迭代的內建機制。為了模擬這個行為,讓我們來探索三種方法:

1。 「醜陋」的方式:使用上下文布林值

將第二個參數傳遞給 forEach 作為上下文,並在其中儲存一個布林值。在回調函數內,檢查布林值並在必要時進行中斷。這種方法在視覺上沒有吸引力。

function recurs(comment) {
    var stop = false;
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) stop = true;
    }, stop);
}

2. 「有爭議的」方式:異常處理

將 forEach 迴圈包含在 try-catch 區塊中。當你想中斷時,拋出一個異常並在循環外捕獲它。這種方法會影響效能,並可能引起對程式碼可讀性的擔憂。

try {
    comment.comments.forEach(function (elem) {
        recurs(elem);
        if (...) throw new Error("Stop Iteration");
    });
} catch (e) {
    if (e.message === "Stop Iteration") return;
}

3. 「有趣」的方式:使用 every()

every() 是更好的選擇。它繼續迭代集合,直到回​​調函數傳回 false。這實際上充當了一個break語句。

comment.comments.every(function (elem) {
    recurs(elem);
    if (...) return false;
    return true;
});

如果您希望回傳 true 來中斷,也可以使用 some() 來取代 every()。

版本聲明 本文轉載於:1729171158如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3