问题描述:
使用js的时候经常用到查询数据中指定数据的情况,而数据的forEach() 方法比较常见,它将数组的每个元素传递给回调函数,在回调函数中进行操作。
和其他的循环不同,不能使用break和return跳出循环,所以一般不用它来做查询,可以用它来进行数据修改。
如果对一个大数组使用foreach函数,已经找了数据还要进行后面的循环显然是不划算的,低效率的。因此非要使用forEach() 进行查询,而且查询后就需要退出,这是可以使用try...throw-catch。
跳出forEach() :
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
try{
this.array1.forEach(element => {
if(element.name == "标记1"){
this.temp.Id = element.id;
//break; 错误
//return; 不能跳出foreach
throw new Error("ddddd")
}
});
}catch(e){
if(e.message !="ddddd")throw e;
}
使用every实现 break
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
var arr = [1,2,3,4,5];
var num = 3;
arr.every(function(v){
if(v == num) {
return false;;//返回false表示break,返回true表示continue
}else{
console.log(v);
return true;
}
});
参考:
https://www.runoob.com/jsref/jsref-foreach.html
https://www.runoob.com/jsref/jsref-every.html