forEach跳出循环

618 阅读1分钟

表单验证时源数据是数组,有一个不符合条件则跳出循环

但是forEach使用return并不会跳出循环

forEach跳出循环的方法:

forEach和filter,map循环数组校验时跳出循环要用try catch

或者使用for,some,every代替

forEach中使用break会报错(filter,map都是) 使用return也不会跳出循环

因为这三个方法都是函数

try {
    var array = ["first", "second", "third", "fourth"];
    array.forEach(function (item, index) {
      if (item == "third") {
        throw new Error("ending");//报错,就跳出循环
      } else {
        console.log(item);
      }
    })
  } catch (e) {
    if (e.message == "ending") {
      console.log("跳出循环...");
    }
  }
  

//第二种方法:使用arr.some()或者arr.every()替代
  //some()//当内部return true时跳出整个循环:var arr = [1, 2, 3, 4, 5];
  var num = 3;
  arr.some(function (v) {
    if (v == num) {
      return true;
    }
    console.log(v);
  });

  //every()//当内部return false时跳出整个循环var arr = [1, 2, 3, 4, 5];
  var num = 3;
  arr.every(function (v) {
    if (v == num) {
      return false;
    } else {
      console.log(v);
      return true;
    }
  });