InArray以匹配值返回-1

时间:2012-12-27 21:25:45

标签: javascript jquery arrays

var x = new Array(10);
$.inArray(10,x);
#Returns -1

Fiddle

我遇到过这个奇怪的问题,用$.inArray检查数组中的值,非常简单。

但是,如果数组中只有一个值,inArray将返回-1。 如果我向数组添加另一个值,它将按预期工作。

这只发生在整数而不是字符串中。

发生了什么事??

3 个答案:

答案 0 :(得分:4)

如果你想创建一个带有一个数字(10)的数组,你应该使用括号文字:

var x = [10];
$.inArray(10,x);

或推送:

var x = new Array();
x.push(10);

显然,第一个更易读,写得更快。

  

使用给定元素初始化JavaScript数组,除非将单个参数传递给Array构造函数并且该参数是数字。请注意,此特殊情况仅适用于使用Array构造函数创建的JavaScript数组,而不适用于使用括号语法创建的数组文字。

     

如果传递给Array构造函数的唯一参数是整数,则新的空JavaScript数组及其长度设置为该数字   MDN

Fixed fiddle

答案 1 :(得分:1)

我建议在JavaScript中检查数组的文档,链接:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array

在您的情况下,使用:

var x = new Array(10);

它创建一个长度为10的数组,并且该数组的每个项目都是 undefined

我建议使用:

var x = [10];

这是一个数组,其中一个项目在索引0处具有值10。

答案 2 :(得分:0)

var x = new Array(10);创建一个包含10个插槽的数组,而不是包含“10”

的数组