2015-03-31 104 views
-3

我使用for循环,然后做一个功能的基础上的结果来检查数组列表,像在执行函数一次循环

for(var i=0;i<settingData.length;i++){ 
     if(settingData[i].a !== '' && $scope.settingData[i].b){ 
save(); 
}else{ 
alert('missing fields'); 
} 
} 

我怎样才能使保存()来执行一次?因为当我发出警报时,它会触发几次,因为它在for循环中。我不能把它拿出来,因为我已经经历了我所有的阵列来检查..

+1

你的意思是说你想在'save()'运行后退出循环吗? – Pointy 2015-03-31 15:26:31

+0

@Pointy如果语句是真实的run save() – 2015-03-31 15:33:06

+1

目前还不清楚你想要做什么。当列表中的两个元素的'if'语句为'true'时,你想要做什么? – Pointy 2015-03-31 15:35:09

回答

3

添加break保存功能后:

for(var i=0;i<settingData.length;i++){ 
    if(settingData[i].a !== '' && $scope.settingData[i].b){ 
     save(); 
     break; 
    }else{ 
     alert('missing fields'); 
    } 
} 
+0

但中断;我不会循环每一个我。 – 2015-03-31 15:32:44

+0

Dean,如果我的第二个数组有空属性,位于else范围内的警报将不会触发,所以break对这种情况不好。 – 2015-03-31 15:34:51

+1

添加一个条件来测试第二个数组是否具有空属性。并显示警报是否属实。 – R3tep 2015-03-31 15:39:02

2

可以设置missingFields变量。

var missingFields = false; 
for(var i=0;i<settingData.length;i++){ 
    if(! (settingData[i].a !== '' && $scope.settingData[i].b)) { 
     missingFields = true; 
     alert('missing fields'); 
     break; 
    } 
} 
if (!missingFields) { 
    save(); 
} 
+0

保存已触发,如果其中一个数组不等于''',则触发警报。 – 2015-03-31 15:40:46

+1

我很困惑。如果警报没有显示,你只想保存吗? – 2015-03-31 15:42:34