0

可能重复:
jQuery 每个方法不返回值

似乎 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]));
4

3 回答 3

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/

于 2012-12-28T19:39:42.620 回答
4

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

于 2012-12-28T19:42:02.773 回答
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;
};
于 2012-12-28T19:43:14.993 回答