表单验证时源数据是数组,有一个不符合条件则跳出循环
但是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;
}
});