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

小提琴

我遇到了这个奇怪的问题,用 来检查数组中的值$.inArray,真的很简单。

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

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

这是怎么回事?!

4

3 回答 3

4

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

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

或推:

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

显然,第一个更具可读性和编写速度。

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

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

固定小提琴

于 2012-12-27T21:28:15.447 回答
1

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

在您的情况下,通过使用:

var x = new Array(10);

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

我建议使用:

var x = [10];

这是一个数组,其中一个索引为 0 的项目的值为 10。

于 2012-12-27T21:31:56.420 回答
0

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

于 2012-12-27T21:31:48.743 回答