javascript无法从循环中正确返回

时间:2012-12-28 19:37:21

标签: javascript jquery

  

可能重复:
  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]));

3 个答案:

答案 0 :(得分:11)

这是因为它$.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/

答案 1 :(得分:4)

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

答案 2 :(得分: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;
};