当推送一个大小数组中的元素时,数组大小会动态增长为什么?

时间:2014-09-06 11:09:38

标签: javascript

我正在尝试将字符串元素推送到大小的数组但是当推送元素时,大小的数组开始插入数组的最后一个索引中的元素并增长但我想在索引[0]中插入第一个元素和[1]之后的第二个,直到索引[3]但我不知道为什么它开始在最后一个索引之后插入元素并且在添加更多元素时增长我的代码:

var users = new Array(3);
users.push(someData);
console.log(users);
console.log(users.length)

结果如下:

[,,,'d','dd']
5

6 个答案:

答案 0 :(得分:3)

避免使用new Array(count)。只需创建一个空数组,然后像这样推送它:

var users = [];
users.push(someData);

或者,如果你有一些初始静态内容,那就更好了:

var users = [ someData ];

我建议你避免使用new Array(...)的原因是因为它可能会造成混淆和容易出错:

  • new Array(3)将创建一个包含3个项目的数组:[undefined, undefined, undefined]
  • new Array(3, 4)将创建一个包含商品34的数组:[3, 4]

答案 1 :(得分:2)

Push会在数组末尾添加一个新元素。您创建具有三个空条目的数组,然后将somethign推到最后。 Javascript没有有限大小的数组。在你的情况下,我猜你想创建一个空数组,只需按下它即可。

答案 2 :(得分:1)

传递给新数组调用的参数设置初始大小,而不是最大大小。没有最大尺寸。只需像这样创建数组:

var users = new Array()

var users = []

答案 3 :(得分:1)

使用构造函数创建数组并指定大小时,只会设置数组的当前长度,但不会限制数组的大小。

这样做:

var users = new Array(3);

与此完全相同:

var users = new Array();
users.length = 3;

通过设置长度来增长数组实际上不会在数组中放置任何内容,它只会 设置length属性。

push方法在添加项目时会查看length属性,因此请执行以下操作:

users.push(someData);

完全相同:

users[users.length] = someData;

如果您希望阵列从一开始就是空的,只需创建它而不设置长度:

var users = new Array();

您还可以使用数组文字语法创建一个空数组:

var users = [];

Arrays不支持限制大小,所以如果你想要一个有限大小的集合,你必须自己创建它(或者找一个别人创建的集合)。

答案 4 :(得分:0)

数组最后一个索引的数组插入元素的

array.push()方法。使用array.unshift()方法从数组的起始索引推送

答案 5 :(得分:0)

因为在javascript中“var users = new Array(3);”表示创建包含3个未定义元素的数组。

有关基本阵列初始化的详细信息,请参阅:http://www.w3schools.com/js/js_arrays.asp