2012-09-15 40 views
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));返回1inArray()返回-1,即使元素存在於數組中

回答

3

字符串與整數我會想象。不同的類型意味着inArray不會將它們視爲相同。確保你使用的是一個字符串,而不是一個整數,這應該工作。

3

看起來好像_photoId是一個數字,但photoIds包含字符串。試試這個:

$.inArray(''+ _photoId, photoIds) 
1

這是因爲$.inArray函數也考慮了類型。它不會說整數與字符串相同。這也在documentation的第一條評論中解釋。

您可以使用_photoId.toString()來獲取值的字符串表示形式。

還要注意的是ECMAScript中(JavaScript)的有一個叫indexOf原生功能,不正是同樣的事情jQuery的一個:

photoIds.indexOf(_photoId.toString()) 
相關問題