0

重複の可能性:
jQuery の各メソッドが値を返さない

return ステートメントはループを壊して関数を返さないようです。次のコードは 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 に答える