1. 程式人生 > >跳出forEach迴圈

跳出forEach迴圈

    我們平時用到的迴圈有很多種。for, map, while, forEach, for...of, for...in等等,每種迴圈都有在某一次迴圈語句中跳出本次迴圈的方法,但是除了forEach。

    有小夥伴說不用不就好了。其實這些迴圈裡邊,當屬for的效率最高,for...in最低。但是for的寫法比較繁瑣而且“看起來”不是那麼高階僅僅是看起來,因為它的效能確實是最好的。但是定義迴圈變數不當有可能進入非同步的坑。所以我們在寫業務時很多都會用forEach去代替for,因為它每次迴圈自帶當次值和下標,確實方便很多。 

    但是有時候,長度一百的陣列,我們可能在第十次迴圈就取到了想要的值,如果用for,我們可能會用break直接跳出。但是forEach,這個傢伙不識別break。那怎麼跳出呢?用return?它只會中斷當此迴圈。

     用try{}catch(){}。你沒看錯。捕獲異常機制本身的功能就是在出現異常的時候跳出try的程式碼塊到catch裡處理異常。我們可以用throw方法手動丟擲一個異常,這樣就跳出了forEach迴圈。

    

寫break直接就報錯了。

正確寫法:

let arr = [0, 1, 2, 3, 4, 5, 6]
try{
    arr.forEach((item) => {
        if (item === 3) {
            throw 'Jump out now!'//在這裡丟擲異常
        }
        console.log(item)
    })
} catch (e) {
    console.log(e)
}

執行結果:

0
1
2
Jump out now!
果然知識限制了我們的想象力。