jQuery:关于inArray()的问题

时间:2011-03-18 13:30:35

标签: jquery arrays

我在下面有这个代码。我不知道为什么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?

}

此致

哈维

6 个答案:

答案 0 :(得分:5)

您可能使用字符串'17'而不是数字17填充数组。这就是它返回-1的原因。

现场演示: http://jsfiddle.net/simevidas/s4Q3K/

答案 1 :(得分:3)

当找不到元素时,

$.inArray返回-1。 我们能看到你在哪里用数组值填充客户端吗?您可能没有正确填充数组。

alert(client)不应打印'17',它应打印以逗号分隔的数组值。

编辑:我想出了问题所在。如果client包含字符串'17'而不包含数字17,因为17 !== '17'

示例:http://jsfiddle.net/ub6xX/1/

工作示例:http://jsfiddle.net/fkling/ub6xX/

答案 2 :(得分:2)

因为inArray(id, client)会检查id是否在数组client中。

由于id不在该数组中(至少不符合您的样本),因此返回-1Know your API

答案 3 :(得分:0)

-1表示找不到,所以基本上数组中的项不存在。

0意味着它已在数组的第一个位置找到了id。您的代码中没有任何内容表明这应该发生。

http://api.jquery.com/jQuery.inArray/

答案 4 :(得分:0)

  

$ .inArray()方法类似于   JavaScript的原生.indexOf()方法   因为它没有返回-1   找到匹配。如果是第一个元素   在数组内匹配值,   $ .inArray()返回0。

     

因为JavaScript将0视为松散   等于假(即0 ==假,但为0   !== false),如果我们正在检查   我们在数组中存在值   需要检查它是否不等于(或   大于)-1。

答案 5 :(得分:0)

我没有看到你把你的id放到客户端数组中的哪个我猜你因为你没有它在数组中找不到它