Javascript JQUERY不匹配
我正在和他一起工作,我希望yinz能帮上忙 我有AJAX,它可以从我的数据库中提取一些用户ID。它是JSON编码的,并作为一个数组下拉。然而,当我尝试将一个值与数组匹配时,我总是得到-1。它从不匹配 我已经发出了一系列警报,试图弄清楚到底发生了什么,但我一辈子都不知道为什么它不起作用。为了便于讨论,让我们假设它所拉下来的用户是1、2和3。图像集合中表示的用户标识是1、2、3、4、5Javascript JQUERY不匹配,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在和他一起工作,我希望yinz能帮上忙 我有AJAX,它可以从我的数据库中提取一些用户ID。它是JSON编码的,并作为一个数组下拉。然而,当我尝试将一个值与数组匹配时,我总是得到-1。它从不匹配 我已经发出了一系列警报,试图弄清楚到底发生了什么,但我一辈子都不知道为什么它不起作用。为了便于讨论,让我们假设它所拉下来的用户是1、2和3。图像集合中表示的用户标识是1、2、3、4、5 $.ajax({ dataType: "json", url: "/* some url */",
$.ajax({
dataType: "json",
url: "/* some url */",
success: function (players) {
$("#userpics img").each(function () {
var userid = $(this).data("userid");
alert (players); // 1,2,3
alert (userid); // 1
alert ("is array? " + Array.isArray(players)); // true
alert ("in array? " + $.inArray(userid, players)); // -1
alert ("in object? " + (userid in players)); // false
alert ("match? " + (userid == players[0])); // true
})
}
});
如您所见,在第一个警报中,正在下拉的数组显示为字符串,但在第三个警报中,它解析为数组。即使userid=1
并且下拉的数据是[“1”、“2”、“3”]
它仍然无法与inArray
匹配。但是,当我匹配userid==players[0]
时,它匹配
我完全被难住了 试试看
返回数组中元素的索引(如果找到)
搜索数组中的第一个元素时,结果将为零
在JavaScript中,Zero的计算结果为false
您需要显式地将inArray()的结果与-1
进行比较,以确定它是否包含元素
使用以下命令:
if (inArray(val, someArray) !== -1) {
alert("it's in there...");
}
取而代之的是:
if (inArray(val, someArray)) {
alert("This won't work for the first element.");
}
看起来就像是将字符串与数字数组进行比较 这可能是您获得此输出的原因 还要检查它是否返回负索引,因为这表明该项不在数组中
if( $.inArray(userid, players) > - 1){
// Item in array
}
对玩家做一个console.log(),你就会明白为什么它不起作用。希望你能把它打印在这里以获得更好的帮助。是字符串数组还是数字数组?userid呢?你从
(userid==players[0])
中得到了什么?我建议您停止对数据类型进行假设,并开始确保它们正是您想要的。您可以使用parseInt
确保变量是一个数字。您还可以尝试阅读jQuery.inArray()或$.inArray(userid+“”,players)
jahroy的文档-我最初在userid声明中使用了parseInt。这并没有解决问题。但是你的类型测试肯定是有意义的起作用,==不起作用。我认为,这一定意味着json正在将int作为字符串进行下拉。您应该明确检查返回值是否不等于-1
。