关于跳出循环的详细介绍可以看这篇:https://blog.csdn.net/Code_King006/article/details/130565506
说下自己的业务场景:判断数组中是否有满足条件的套餐,如果有就接着判断下一个条件不再查询后续数组(也就是需要终止当前循环),否则返回false
原本用的是foreach去判断,但这样写显然是有问题的,比如说arr1中的有三个数组,前两个数组满足条件1,最后一个数组不满足条件1,那么isMeber 的值最终就是false;不满足要求( foreach通过return跳出循环无效 ),修改后通过for循环,满足条件后通过break 跳出循环。
function IS_MEBER(e) {
arr1.forEach(v=>{
if( v.jzlx == userInfo.jzlx && v.glkm == glkm && v.dqsj > timestamp ){ // 条件1
arr2.forEach(k=>{
if ( k.xmmc==e || k.xmjs==e ){ // 条件1
if( k.jzlx == userInfo.jzlx && k.glkmmc == glkm ){ // 条件3
isMeber = true;
}
}else {
isMeber = false;
}
})
}else {
isMeber = false;
}
})
return isMeber;
}
修改后:
function IS_MEBER(e) {
for (let k = 0; k < arr1.length; k++) {
if( arr1[k].jzlx == userInfo.jzlx && arr1[k].glkm == glkm && arr1[k].dqsj > timestamp ){ // 条件1
for (var i = 0; i < arr2.length; i++) {
if ( arr2[i].xmmc==e || arr2[i].xmjs==e ){ // 条件1
if( arr2[i].jzlx == userInfo.jzlx && arr2[i].glkmmc == glkm ){ // 条件3
isMeber = true;
break; // 如果找到了满足条件的单项就跳出循环
}
}else {
isMeber = false;
}
})
break;
}else {
isMeber = false;
}
})
return isMeber;
}
其实是很简单的问题,但碰见的时候总是习惯使用foreach,在这里记录一下,警示自己。