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