用Javascript创建数组[重复]

Posted

技术标签:

【中文标题】用Javascript创建数组[重复]【英文标题】:Creating Array in Javascript [duplicate] 【发布时间】:2014-09-15 21:16:12 【问题描述】:

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

提前致谢

【问题讨论】:

一些关于如何创建预填充数组on this post的有趣答案。 "和 new Array(0,0,0) 创建一个数组 a[0,1,2]" - 不,它不会创建您正在寻找的 [0,0,0] 数组。 【参考方案1】:

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

如果你的意思是某种预初始化构造函数或填充操作,不,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! 它可能会帮助一些引擎(一点点),阻碍其他引擎(一点点),和/或没有任何区别:

【讨论】:

虽然你的回答隐含了这一点,但我想指出数组不需要用特定长度初始化 旁注:我不建议使用自己的方法扩展 javascript 基本函数对象。有可能破坏这些对象的其他功能。 (我记得从《Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript》一书中读到的东西)。另外,我认为这些方法的存在可能会让其他开发人员感到困惑或不知道,因为他们所看到的只是一个普通的 Array 函数对象。 @MaunoV.:如果您将东西添加到附加到事物的 prototypes 中,例如Array.prototype,这将是一个更大的问题。但是,是的,如果其他人将名为 createFilled 的东西添加到 Array 构造函数对象中,就有可能发生冲突。我的看法是:在您自己的代码中执行此操作很好,在其他人将使用的库中执行此操作并不好。但当然,App.Utils.createFilled 会起作用。 :-)

以上是关于用Javascript创建数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript创建多维数组语法[重复]

Javascript - 在创建时对数组元素执行操作[重复]

JavaScript中带有一个数字的数组映射[重复]

检查单选按钮是不是在javascript中被选中/未选中的函数[重复]

Javascript创建一个具有唯一值组合的数组[重复]

JavaScript对象