javascript创建给定大小的空数组

IT技术 javascript
2021-02-20 11:50:31

在 javascript 中,我将如何创建一个给定大小的空数组

伪代码:

X = 3;
createarray(myarray, X, "");

输出:

   myarray = ["","",""]
6个回答

1)要创建不能迭代的新数组,可以使用数组构造函数:

Array(100) 或者 new Array(100)


2)您可以创建新数组,可以像下面这样迭代

a)所有 JavaScript 版本

  • 数组.应用: Array.apply(null, Array(100))

b)从 ES6 JavaScript 版本开始

  • 解构运算符: [...Array(100)]
  • 数组.prototype.fill Array(100).fill(undefined)
  • 数组.from Array.from({ length: 100 })

您可以像下面这样映射这些数组。

  • Array(4).fill(null).map((u, i) => i) [0, 1, 2, 3]

  • [...Array(4)].map((u, i) => i) [0, 1, 2, 3]

  • Array.apply(null, Array(4)).map((u, i) => i) [0, 1, 2, 3]

  • Array.from({ length: 4 }).map((u, i) => i) [0, 1, 2, 3]

它的长度是 10000,你可以通过检查它console.log(Array(10000).length)但是如果你运行Array(10000).forEach((u, i) => console.log(i)),你将不会得到任何输出
2021-04-25 11:50:31
今日启蒙 - 当您在 (A) 部分中提到使用构造函数语法新创建的数组甚至不可迭代时。Javascript 有时真的令人惊讶。
2021-04-26 11:50:31
Array.apply('x', Array(10)) 实际上是 [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
2021-04-27 11:50:31
Array.prototype.fill (>=ES6) kangax.github.io/compat-table/es6/... ;
2021-05-05 11:50:31
Array(10000)with的尺寸是empty x 10000多少?
2021-05-08 11:50:31
var arr = new Array(5);
console.log(arr.length) // 5
OP 提供了一个“空”的例子。
2021-05-03 11:50:31
OP问道in javascript how would I create an empty array of a given size这解决了这个问题。
2021-05-04 11:50:31
好吧,这是问题的另一种选择。他们可以选择提供的任何答案,这就是 stackoverflow 的荣耀:)
2021-05-12 11:50:31

我们Array.from({length: 500})从 2017 年开始使用

@gion_13:我看到它被投票赞成,而我的被投票反对。原因?
2021-04-29 11:50:31
@gion_13:感谢您确认我的解决方案没有任何问题☺。
2021-05-07 11:50:31
@7vujy0f0hy 我不知道你为什么投票失败。我给了你一个赞成票,尽管你的解决方案比这个更不直观。
2021-05-17 11:50:31

从 ES5 开始(给出这个答案时):

如果你想要一个空的undefined元素数组,你可以简单地做

var whatever = new Array(5);

这会给你

[undefined, undefined, undefined, undefined, undefined]

在较新的版本中,这现在给出

[empty × 5]

请参阅有关空和未定义之间区别的其他问题

如果你想用空字符串填充它,你可以这样做

whatever.fill('');

这会给你

["", "", "", "", ""]

如果你想在一行中完成:

var whatever = Array(5).fill('');
@JCF for...of 使用迭代器协议,因此它的行为与 forEach/map 不同。迭代器松散空信息
2021-04-22 11:50:31
行。还有其他事情我不明白。我正在创建一个新数组,但new Array(2)我得到的[ <2 empty items> ]不是[undefined, undefined]. .map对前者使用没有效果。但是,我可以使用for...of循环对其进行迭代如果我使用文字符号创建一个新数组,a = [undefined, undefined]那么我可以.map在它上面使用
2021-04-23 11:50:31
new Array(2) 不会给你 [undefined, undefined]。它为您提供了一个不可迭代的数组。
2021-04-24 11:50:31
@TomaszBłachut @JCF 对于投反对票的人,请记住,这个答案是 4 年前给出的——当时,这个答案是 100% 有效的。ES6 和 ES7 分别在 2016 年年中和 2018 年年中才开始向浏览器推出。在回答这个问题时,JS 版本应该是 ES5。如果您需要进一步证明这就是ES5 的工作方式,只需启动一个旧的 Chrome 实例——在这个答案的时候,它应该是 v48——并运行Array(5). 您将看到以下输出:[undefined x 5].
2021-04-28 11:50:31
@jeffdill2 最好为答案本身添加新信息。评论并不总是被完全阅读。
2021-05-08 11:50:31

尝试使用while循环,Array.prototype.push()

var myArray = [], X = 3;
while (myArray.length < X) {
  myArray.push("")
}

或者,使用 Array.prototype.fill()

var myArray = Array(3).fill("");
.fill()是一种优雅的单衬解决方案。谢谢!
2021-05-14 11:50:31