jQuery.InArray()返回-1的问题

时间:2013-01-22 03:01:54

标签: javascript jquery arrays

我遇到一个问题,jQuery.InArray()在运行函数时返回-1,但我知道我正在测试的值肯定在数组中。

我知道它们在数组中,因为如果我在运行jQuery.inArray()之前调试数组的值,那么值就存在并显示。以下是我正在使用的示例:

/* -- In page.php -- */
images = [8, 13, 21, 32, 40, 56]; 


/* -- In script.js -- */
console.log('images->', images); 
//output  images-> [8, 13, 21, 32, 40, 56]

var testingValue = 13;

console.log('inArray->', jQuery.inArray(testingValue, images)); //Should return 1
//output inArray-> -1

console.log('inArray->', jQuery.inArray(13, images)); //Should return 1
//output inArray-> -1

console.log('inArray->', jQuery.inArray("13", images)); //Should return -1
//output inArray-> -1

console.log('inArray->', jQuery.inArray('13', images)); //Should return -1 
//output inArray-> -1

所有这些都会返回-1,即使前两位应该返回1。奇怪的是,如果我在控制台中手动测试jQuery.inArray(testingValue, images),我会得到值1.

有一点需要注意:变量images是在包含js文件的php页面中创建的。这应该不是问题。

附加说明:是的,在脚本的这部分运行之前,jQuery已经包含在内。许多其他jQuery函数在此之前成功运行。

我想知道的是这个功能是否有任何问题。我在过去成功使用过它,并且看不到任何代码会阻止它返回正确的值。

1 个答案:

答案 0 :(得分:5)

经过一夜安眠后,我能够圈起来重新审视这个问题。变量testingValue = 13;显式地转换为整数。问题是我通过jQuery $.each(arrayName, function(index,value){})动态获取该值。虽然数据显示index确实是一个整数,但由于某种原因$.inArray()没有将它视为int / float,因此没有在数值数组中找到值。在检查它是inArray之前,我将代码修改为parseInt() index变量。

长话短说

如果您在尝试使用带有整数或浮点数组的jQuery.inArray()时遇到问题,请分别尝试使用parseInt()parseFloat()以确保该函数正在接收正确的数据类型。

if( jQuery.inArray(parseInt(yourVariable), yourArray) > -1)
{
    return true;
}