当前位置: 首页 > 知识库问答 >
问题:

在JavaScript/Angular中退出嵌套的foreach(函数)循环

商同
2023-03-14
function checkFieldsValidation () {
        var VFflag =true; //Validation Failed Flag - true: not failed, False - failed
            assessmentForm.Objectives.forEach(function(o){
            if (VFflag){
            o.component.Fields.forEach(function(f){
                if (VFflag){
                    if (f.IsRequired ){
                            for (var i in $scope.responses )
                            {
                                    if( $scope.responses[i].objectives[o.relationship.ActivityRelationshipID][f.FieldID].value.length>0){ 
                                    VFflag=VFflag;
                                    }
                                    else
                                    {
                                    var VFparIndex=i;
                                    var VFActivityRelationshipID=o.relationship.ActivityRelationshipID;
                                    var VFFieldID = f.FieldID;
                                    VFflag=false;
                                    return;
                                    }
                            }
                    }
                }
                else {return;}
                }
                )
            } else {return;}
            }
            )
        return [VFflag,VFparIndex,VFActivityRelationshipID,VFFieldID];
        }

共有1个答案

艾嘉石
2023-03-14

TLDR:使用.every而不是.foreach

从foreach上的MDN页面:

注意:没有办法停止或中断forEach循环。解决方案是使用Array.Every或Array.Some。

function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);

当前您正在定义匿名函数

function(o){ .... }

在循环中使用。这意味着foreach调用正在接收该函数,并且对于数组中的每个项,它以当前数组项作为参数调用该函数。

在上面的例子中,也发生了同样的情况;让我们做得更简单一些:

var numbers = [12, 5, 8, 130, 44];
var allValid = numbers.every(function(num) { return (num > 10) });
 类似资料:
  • 我有一个这样的数组 我想做的是前面的模型,为其数量绘制徽标,因此三星=3,索尼=7,以此类推,将绘制3个索尼徽标和7个三星徽标。 我想出了这样的办法 但是当然,所有这些都是为了每个数组条目,呼应出名称,所以我最终打印了5个三星,打印了5个索尼,等等。 如何使其使用 qty 数组的值而不是条目数?

  • 这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了

  • 我的代码有一个问题,它有两个嵌套的foreach循环: 所以我在“消息”中有2个条目,在“评论”中有4个条目,第一个条目为“消息”,第二个条目为2。我想要: 消息1-评论1-评论2 消息2-注释3-注释4 这就是我所拥有的: 消息1-评论1-评论2 消息2-注释1-注释2-注释3-注释4 我搜索了两个小时,在mysqli中没有找到解决方案:((当我找到时 mysqli_data_seek($com

  • 我已经在下面编写了简单的嵌套For循环; 在我的Android设备或模拟器中运行此操作,或的最大值应为和。 然而,代码似乎在max和max时退出(至少吐司消失了)。 对于较低的和值,它可以正常工作。我是不是遇到了内存问题或者发生了什么?

  • 我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?

  • 我正在努力返回嵌套在函数中的一个promise(或多个promise),该函数嵌套在函数中。 我认为最好通过查看代码来缠绕你的头,所以这里是: