在Javascript中创建数组

use*_*265 -1 javascript arrays

如何创建长度为3的数组,并且数组元素的值为0.如果我将数组的长度设为3,则数组应如下所示

  a[0]=0;
  a[1]=0;
  a[2]=0;
Run Code Online (Sandbox Code Playgroud)

我试过这个new Array(3),它创建了一个a[,,,]长度为3 new Array(0,0,0)的数组并创建了一个数组a[0,1,2],是否可以通过定义数组元素的长度和值来创建数组?

提前致谢

T.J*_*der 5

是否可以通过定义数组元素的长度和值来创建数组?

如果你的意思是,某种预初始化构造函数或填充操作,不,JavaScript没有那个.

如果您知道在编写代码时需要三个元素,则可以执行以下操作:

a = [0, 0, 0];
Run Code Online (Sandbox Code Playgroud)

它被称为数组初始化器.

如果您事先并不知道(例如,在编写代码时)数组应该有多大,您可以根据需要填写它:

a = [];
var index;
for (index = 0; index < initialSize; ++index) {
    a[index] = 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,您不必在阵列中预先分配空间; 数组可以根据需要"增长".(这可能看起来很奇怪,但标准JavaScript数组根本不是真正的数组,尽管JavaScript引擎会经常尝试使用真正的数组作为优化,如果他们认为可以的话.)

但是如果你愿意,你可以通过使用以下方式预先告诉引擎引擎你想要的长度:

a = new Array(initialSize);
Run Code Online (Sandbox Code Playgroud)

......而不是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;
}
Run Code Online (Sandbox Code Playgroud)

然后在各个地方使用它,你想要一个预先填充的数组:

var a = Array.createFilled(3, 0); // 0,0,0
Run Code Online (Sandbox Code Playgroud)

附注:始终确保声明您的变量,例如,var a;在上面的行之前的某处.


显然,提前告诉引擎阵列的大小应该让它做更好的优化,对吧?不必要!它可能会帮助一些引擎(一点点),阻碍其他引擎(一点点),和/或没有区别:

图表缩短jsperf结果,Chrome浏览器速度最快,没有长度,Firefox在构造函数中最快,IE11不关心