3

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

我知道它们在数组中,因为如果我在运行之前 console.log 数组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 函数都已成功运行。

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

4

1 回答 1

7

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

长话短说

如果您在尝试将 jQuery.inArray() 与整数或浮点数数组一起使用时遇到问题,请尝试分别使用parseInt()orparseFloat()来确保函数接收到正确的数据类型。

if( jQuery.inArray(parseInt(yourVariable), yourArray) > -1)
{
    return true;
}
于 2013-01-22T17:12:23.573 回答