【问题标题】:Stop function if condition is true如果条件为真,则停止功能
【发布时间】:2014-05-10 15:32:06
【问题描述】:

我使用 Array map() 方法检查 Array 中的每个元素,如果 if 子句中的条件为真,我将调用另一个函数。

$.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;
   };
});

但这没有用!我能做什么呢?谢谢

【问题讨论】:

  • 你试过break吗;
  • this didnt worked ...请详细说明。
  • 这违背了map 的目的,使用$.each 函数代替stackoverflow.com/q/1799284/1117720
  • 阅读地图规范即可。并自己做一个for循环。用for循环写一个函数难吗????

标签: javascript jquery


【解决方案1】:

使用带有 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 用于不同的任务。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      返回 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;
         };
      });
      

      【讨论】:

      • 我认为这行不通...在the docs for map 中,它指出:该函数可以返回:1)翻译后的值,它将映射到结果数组。 2) null 或 undefined,删除该项。 3) 一个值数组,将被展平成完整的数组。
      • 对不起,您还必须将 .map 替换为 .each,我已经编辑了我的初始答案。
      【解决方案4】:

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

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

      或者更好的是,使用@disq 共享的简单 for 循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        相关资源
        最近更新 更多