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函数在此之前成功运行.
我想知道的是,这个功能是否有任何问题.我过去已成功使用它,并且看不到任何代码会阻止它返回正确的值.
经过一夜安眠后,我能够圈起来,重新审视这个问题.变量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)
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |