在Javascript中创建数组

时间:2014-07-24 10:49:22

标签: javascript arrays

如何创建长度为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],是否可以通过定义数组来创建数组数组元素的长度和值?

先谢谢

1 个答案:

答案 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!它可以帮助一些引擎(一点点),阻碍其他引擎(一点点),和/或没有区别:

chart shorting jsperf results with Chrome fastest with no length, Firefox fastest with length in the constructor, and IE11 not caring