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

Vic*_*ilo 2 javascript arrays jquery

我遇到一个问题,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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Vic*_*ilo 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;
}
Run Code Online (Sandbox Code Playgroud)