0
$.post('service.php?getPhotos', function(data){ 

    var photoIds = [];

    $.each(data, function(){
        photoIds.push(this.id);
    });

    console.log(_photoId); //7962669392
    console.log(photoIds); //["7980686507", "7962669392", "7962163506"]
    console.log($.inArray(_photoId, photoIds)); //-1

});

なぜconsole.log($.inArray(_photoId, photoIds));戻らないの1ですか?

4

3 に答える 3

3

_photoId数字のようですが、photoIds文字列が含まれています。これを試して:

$.inArray(''+ _photoId, photoIds)
于 2012-09-15T09:31:59.873 に答える
3

文字列と整数を想像します。異なるタイプは、inArrayがそれらを同じものとして認識しないことを意味します。整数の代わりに文字列を使用していることを確認してください。これでうまくいくはずです。

于 2012-09-15T09:32:00.833 に答える
1

これは、$.inArray関数がタイプも考慮に入れるためです。整数が文字列と同じであるとは言いません。これは、ドキュメントの最初のコメントでも説明されています。

を使用_photoId.toString()して、値の文字列表現を取得できます。

また、ECMAScript(Javascript)には、jQueryとまったく同じことを行うindexOfというネイティブ関数があることに注意してください。

photoIds.indexOf(_photoId.toString())
于 2012-09-15T09:34:32.037 に答える