[英]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)
将创建一个包含项3
和4
的数组: [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.