我在下面有这个代码。我不知道为什么inArray()不输出0.还有什么想法吗?
var client = new Array();
function removeClient(id){
alert(id); //prints 17
alert(client); //prints 17
alert(typeof(id)); //this prints "number"
alert(typeof(client)); //this prints "object"
alert($.inArray(id, client)); //this prints "-1", why?
}
此致
哈维
答案 0 :(得分:5)
您可能使用字符串'17'
而不是数字17
填充数组。这就是它返回-1
的原因。
答案 1 :(得分:3)
$.inArray
返回-1。 我们能看到你在哪里用数组值填充客户端吗?您可能没有正确填充数组。
alert(client)
不应打印'17',它应打印以逗号分隔的数组值。
编辑:我想出了问题所在。如果client
包含字符串'17'
而不包含数字17
,因为17 !== '17'
答案 2 :(得分:2)
因为inArray(id, client)
会检查id
是否在数组client
中。
由于id
不在该数组中(至少不符合您的样本),因此返回-1
。 Know your API
答案 3 :(得分:0)
-1表示找不到,所以基本上数组中的项不存在。
0意味着它已在数组的第一个位置找到了id。您的代码中没有任何内容表明这应该发生。
答案 4 :(得分:0)
$ .inArray()方法类似于 JavaScript的原生.indexOf()方法 因为它没有返回-1 找到匹配。如果是第一个元素 在数组内匹配值, $ .inArray()返回0。
因为JavaScript将0视为松散 等于假(即0 ==假,但为0 !== false),如果我们正在检查 我们在数组中存在值 需要检查它是否不等于(或 大于)-1。
答案 5 :(得分:0)
我没有看到你把你的id放到客户端数组中的哪个我猜你因为你没有它在数组中找不到它