如果条件为真,则停止功能

时间:2014-05-10 15:32:06

标签: javascript jquery

我使用Array map()方法检查数组中的每个元素,如果if clausel中的条件为true,则调用另一个函数。

$.map(data['icd'], function (field, i) {
   if(field.nummer == search){
      Diagnose.single(field.id);
   };
});

现在我的问题是,如果元素满足if条件,我想停止map方法。因为我注意到当我有6个满足条件的元素时,函数Diagnose.single(field.id);被调用6次而不是一次!

我试过了:

$.map(data['icd'], function (field, i) {
   if(field.nummer == search){
      Diagnose.single(field.id);
      return true;
   };
});

但这没有用!我该怎么做?感谢

4 个答案:

答案 0 :(得分:4)

使用带有break语句的简单for循环:

for (var i = 0; i < data['icd'].length; i++) {
   if (data['icd'][i].nummer == search){
      Diagnose.single(data['icd'][i].id);
      break;
   };    
}

map用于不同的任务。

答案 1 :(得分:4)

如果您不需要IE8支持,可以使用Array.prototype.some

data['icd'].some(function (field, i) {
   if(field.nummer == search){
      Diagnose.single(field.id);
      return true;
   };
});

答案 2 :(得分:1)

返回false并将.map替换为.each

$.each(data['icd'], function (field, i) {
   if(field.nummer == search){
      Diagnose.single(field.id);
      // Need to return false, return true will go for a success and still continue.
      return false;
   };
});

答案 3 :(得分:1)

我认为在你的情况下你想使用jQuery each function。然后,您可以return false打破循环

$.each(data['icd'], function (field, i) {
   if(field.nummer == search){
      Diagnose.single(field.id);
      return false;
   };
});

甚至更好,使用简单的for循环作为@disq共享。