你瞅啥呢

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后面不跟逻辑的话是不会终止循环的。

 

posted @ 2024-03-21 10:31  叶乘风  阅读(3605)  评论(0)    收藏  举报