繁体   English   中英

当将元素推入大小数组时,数组大小动态增长是为什么?

[英]when push an element in sized array the array size is dynamically grow why?

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

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

结果是这样的:

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

避免使用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]

Push将新元素添加到数组的末尾。 您用三个空条目创建数组,然后将somethign推到末尾。 Javascript没有大小限制的数组。 在您的情况下,我想您想创建一个空数组并推入它。

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

var users = new Array()

要么

var users = []

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

这样做:

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 = [];

数组不支持限制大小,因此,如果要使用有限大小的集合,则必须自己创建(或找到其他人创建的集合)。

数组插入元素的array.push()方法,从数组的最后一个索引开始。 使用array.unshift()方法从数组的起始索引开始

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM