js中循环判断找到满足条件的单项后结束循环

发布时间 2023-06-17 14:43:27作者: 以对

关于跳出循环的详细介绍可以看这篇: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,在这里记录一下,警示自己。