Angular:如何从内循环中脱离外循环?

时间:2016-03-21 19:51:41

标签: javascript angularjs

我尝试使用break语句。但没有成功。一旦条件在内循环中匹配,我想从外循环中突破。

var dataArray = [];
for(var k = 0; k < data.length; k++) {
    // Add items to array
    dataArray.push(data[k].c_first_name + " " + data[k].c_last_name);
}

response(dataArray);

3 个答案:

答案 0 :(得分:2)

当您使用forEach时,无法暂停迭代 - 甚至不能使用return。如果您想要一种在循环中间停止迭代的方法,则必须使用实际的forwhile循环(可能类似于for..infor..of或传统如果for(var i = 0; i < whatever; i++是一个数组,则为三个语句myfilejob循环。

然而,一旦你完成了这个,你就可以label循环来获得你正在寻找的确切效果:

outerDupLoop:
for (var outerIndex in myfilejob) {
    var fieldMapO = myfilejob[outerIndex];
    var count = 0;
    innerDupLoop:
    for (var innerIndex in myfilejob) {
        var fieldMapI = myfilejob[innerIndex];
        if(fieldMapO.key == fieldMapI.key){
           $scope.dupKey = fieldMapI.key;
           count ++;
        }
    });

    if(count>1){
        $scope.dups = true;
        break outerDupLoop; // break from the outer loop
    } else {
       $scope.dups = false;
    }
}

(没关系,你试图添加的break语句无论如何都在外部循环中 - 从这个例子中删除标签会使这在功能上等同。你是不是要重构(count > 1)检查以便它会在内循环内正常工作?)

答案 1 :(得分:0)

你可以使用return,这将基本上打破循环。如果你想在内部循环中执行它,将布尔值设置为true,并在外部循环中检查它。

var dupsExist = false;
angular.forEach(myfilejob, function(fieldMapI) {
    if(fieldMapO.key == fieldMapI.key){
        $scope.dupKey = fieldMapI.key;
        dupsExist = true;
        return;
    }
});
if (dupsExist){
    return;
}

答案 2 :(得分:0)

我建议你在满足内心条件时定义一个bool

angular.forEach(myfilejob, function(fieldMapO) {
                var count = 0;
                var conditionFlag = false;
                angular.forEach(myfilejob, function(fieldMapI) {
                    if(fieldMapO.key == fieldMapI.key){
                        $scope.dupKey = fieldMapI.key;
                        count ++;
                        //condition is fulfilled so boolean is true now
                        conditionFlag = true
                        return false
                    }
                });


                if(count>1){
                    $scope.dups = true;

                }
                else{
                    $scope.dups = false;
                }
                //check if condition is satisfied then exit outer loop too
                if(conditionFlag){
                    return false;
                }
            });

希望有所帮助

相关问题