用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 - 在创建时对数组元素执行操作[重复]