我遇到一个问题,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函数在此之前成功运行。
我想知道的是这个功能是否有任何问题。我在过去成功使用过它,并且看不到任何代码会阻止它返回正确的值。
答案 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;
}