解決forEach無法退出迴圈問題

2021-10-01 12:39:11 字數 1579 閱讀 9275

做專案時,習慣使用foreach來代替for迴圈,我們都知道for迴圈裡要跳出整個迴圈是使用break,但在陣列中用foreach迴圈如果要退出整個迴圈使用break會報錯,return也無法跳出迴圈。也就是說foreach遍歷並不能被終止

在fromeach中使用break

let arr = ['1', '2', '3', '4', '5'];

arr.foreach(item=>

console.log(item) // 結果:報錯 uncaught syntaxerror: illegal break statement at array.foreach ()

})

在fromeach中使用return

let arr = ['1', '2', '3', '4', '5'];

arr.foreach(item=>

})

通過for來遍歷實現

let arr = ['1', '2', '3', '4', '5'];

for(let i=0; i通過try···catch丟擲異常的方式實現

通過丟擲異常的方式實現終止迴圈(foreach無法通過正常流程結束迴圈)

let arr = ['1', '2', '3', '4', '5'];

try

console.log(item) // 1 2

})} catch (e)

通過reduce迭代實現,需設定乙個中斷flag

let arr = ['1', '2', '3', '4', '5'];

arr.reduce(function (p, c)

if (this.break)

console.log(c) // 1 2

}, '')

陣列的另外兩個方法some與every(不建議使用)

some()當內部return true時跳出整個迴圈

let arr = ['1', '2', '3', '4', '5'];

arr.some(item=>

console.log(item);

});

every()當內部return false時跳出整個迴圈 

let arr = ['1', '2', '3', '4', '5'];

arr.every(item=> else

});

從實現上表達出的語義來講,some像是在說:有乙個成功,我就成功,而every像是在說:有乙個失敗,我就失敗

一般情況下,我們用some和every是要用它返回的結果。這裡只是簡簡單單利用了其迴圈罷了。這麼寫**可讀性不是很高,但確實是替換掉for的一種方式,不過every要保證在退出迴圈之前的迭代都返回true

JSTL標籤 foreach 退出迴圈

今天用到了 jstl 的 foreach 標籤迴圈遍歷乙個集合,在這個迴圈內寫了乙個 標籤,當滿足某個條件的時候要終止迴圈,但是標籤裡不能使用 break,那怎麼樣終止迴圈呢?且看下面的 list l new arraylist l.add new long 1 l.add new long 4 l...

forEach無法跳出迴圈的解決思路

如果使用過foreach方法來遍歷集合,會發現在lambda表示式中的return並不會終止迴圈,這是由於lambda的底層實現導致的,看下面的例子 public static void main string args 返回結果 s a s b s c可以看到在foreach方法中即是採用了ret...

增強for迴圈 foreach迴圈

1 作用 簡化迭代器的書寫格式。注意 foreach迴圈的底層還是使用了迭代器遍歷。2 適用範圍 如果是實現了iterable介面的物件或者是陣列物件都可以使用foreach迴圈。3 格式 for 資料型別 變數名 遍歷的目標 示例 1 public static void main string ...