2024-03-21 跳出forEach循环的3个方法
前言: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,那么还是会继续循环。
另外,如果非得要跳出循环,可以用for或者some,some在大多数浏览器都是支持的,可放心使用。
some跳出循环
(() => { var a = [1, 2, 3, 4, 5]; a.some((e) => { if (e == 2) return true; console.log(e); }); })();
注意:你的some的return后面不跟逻辑的话是不会终止循环的。

浙公网安备 33010602011771号