【问题标题】:javascript doesn't correctly return from the loop [duplicate]javascript没有正确地从循环中返回[重复]
【发布时间】:2012-12-29 03:53:22
【问题描述】:

可能重复:
jQuery each method does not return value

return 语句似乎没有中断循环并返回函数。以下代码一直返回 false....

var __in__ = function(elem, array){
    // $.each(array, function(index, item) {  
   array.forEach(function(index, item) {
        if (item == elem)
            return true;
    });
    return false;
};


console.log(__in__(3,[1,2,3]));

【问题讨论】:

  • 在这两种情况下,您基本上都有function(){ return true; }——它从匿名函数返回,而不是从调用它的函数返回!
  • @Lkahtz jQuery.grep() 怎么样?
  • 这可能只是一个示例函数,但也有$.inArray()
  • @F.Hauri,请告诉我你在开玩笑。请!?
  • @F.Hauri “最好保持沉默并被认为是傻瓜,而不是说出来并最终消除所有疑问” - Licoln。当然 jQ 是 Javascript...

标签: javascript jquery


【解决方案1】:

那是因为$.each 它正在执行函数回调。 $.each 不是 for 循环。以下是您所追求的:

var __in__ = function(elem, array){
    var result = false;

    $.each(array, function(index, item) {
        if (item == elem) {
            result = true;
            return false;
        }
    });

    return result;
};

http://jsfiddle.net/unByH/1/

【讨论】:

    【解决方案2】:

    您的内部 return 语句仅从内部(嵌套)函数返回,外部 return 语句始终运行(即使在匹配时)。

    【讨论】:

      【解决方案3】:

      试试这个:

      var __in__ = function(elem, array){
          var found = false;
      
          $.each(array, function(index, item) {
              if (item == elem) {
                  found = true;
                  return false; // break out of $.each call
              }
          });
      
          return found;
      };
      

      【讨论】:

      • 当我开始打字时,还没有完整的答案。此外,从each 调用返回不是强制,但我同意,就性能而言,它应该完成,所以我会修复它。
      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 2011-10-18
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多