前言: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,那麼還是會繼續迴圈。