如何创建长度为3的数组,并且数组元素的值为0。 如果我将数组的长度设为3,那么数组应该如下所示
a[0]=0;
a[1]=0;
a[2]=0;
我试过这个new Array(3)
,它创建了一个长度为3的数组a[,,,]
,而new Array(0,0,0)
创建了一个数组a[0,1,2]
,是否可以通过定义数组来创建数组数组元素的长度和值?
先谢谢
答案 0 :(得分:5)
是否可以通过定义数组元素的长度和值来创建数组?
如果你的意思是,某种预初始化构造函数或填充操作,不,JavaScript没有。
如果您在编写代码时知道自己需要三个元素,则可以执行以下操作:
a = [0, 0, 0];
它被称为array initializer。
如果您事先并不知道(例如,在编写代码时)数组应该有多大,您可以根据需要填写它:
a = [];
var index;
for (index = 0; index < initialSize; ++index) {
a[index] = 0;
}
请注意,您不必在阵列中预先分配空间;数组可以根据需要“增长”。 (这可能看起来很奇怪,但是标准的JavaScript数组aren't really arrays at all,尽管JavaScript引擎会经常尝试使用真正的数组作为优化,如果他们认为可以的话。)
但是如果你愿意的话,你可以使用以下方法告诉引擎引擎你想要的长度:
a = new Array(initialSize);
...而不是a = [];
以上。 (接近结尾的更多内容。)
如果您愿意,可以向Array
函数对象添加一个函数来执行此操作:
Array.createFilled(length, value) {
var a = new Array(length); // Or of course, `var a = [];`
var i;
for (i = 0; i < length; ++i) {
a[i] = value;
}
return a;
}
然后在各个地方使用它,你想要一个预先填充的数组:
var a = Array.createFilled(3, 0); // 0,0,0
旁注:请务必声明您的变量,例如,在上一行之前的某处有var a;
。
显然,提前告诉引擎阵列的大小应该让它做更好的优化,对吧? Not necessarily!它可以帮助一些引擎(一点点),阻碍其他引擎(一点点),和/或没有区别: