簡體   English   中英

即使數組中存在元素,inArray()也會返回-1

[英]inArray() returns -1 even though element exists in array

$.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

似乎_photoId是數字,但photoIds包含字符串。 嘗試這個:

$.inArray(''+ _photoId, photoIds)

我想像的是字符串還是整數。 不同的類型將意味着inArray不會將它們視為相同。 確保您使用的是字符串而不是整數,並且應該可以使用。

這是因為$.inArray函數也考慮了類型。 它不會說整數與字符串相同。 文檔的第一條評論中也對此進行了說明

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

還要注意,ECMAScript(Javascript)具有一個名為indexOf的本機函數,它與jQuery的功能完全相同:

photoIds.indexOf(_photoId.toString())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM