javascript创建给定大小的空数组

gus*_*gus 59 javascript

在javascript中如何创建给定大小的空数组

Psuedo代码:

X = 3;
createarray(myarray, X, "");
Run Code Online (Sandbox Code Playgroud)

输出:

   myarray = ["","",""]
Run Code Online (Sandbox Code Playgroud)

stp*_*poa 159

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

Array(100) 要么 new Array(100)


2)你可以创建新的数组,可以迭代如下:

a)所有JavaScript版本

  • Array.apply: Array.apply(null, Array(100))

b)来自ES6 JavaScript版本

  • 解构运营商: [...Array(100)]
  • Array.prototype.fill Array(100).fill(undefined)
  • Array.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]

  • 当天的启示 - 当您在部分(A)中提到使用构造函数语法的新创建的数组甚至不可迭代时.Javascript有时真的很惊喜. (4认同)

mar*_*tch 39

var arr = new Array(5);
console.log(arr.length) // 5
Run Code Online (Sandbox Code Playgroud)

  • OP提供了一个"空"的例子. (8认同)
  • 这不会创建任何成员,它会创建一个长度为5的空数组.等效的数组文字是`[,,,,,]`. (5认同)
  • OP在javascript中询问`我将如何创建给定大小的空数组?这解决了这个问题. (5认同)
  • 那么这是问题的另一个选择.他们可以选择提供的任何答案,这是stackoverflow的荣耀:) (4认同)

and*_*slv 31

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


gue*_*314 12

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

var myArray = [], X = 3;
while (myArray.length < X) {
  myArray.push("")
}
Run Code Online (Sandbox Code Playgroud)

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

var myArray = Array(3).fill("");
Run Code Online (Sandbox Code Playgroud)


7vu*_*0hy 9

在2018年和此后我们将用于[...Array(500)]此目的.

  • 走向未来! (2认同)

jef*_*ll2 8

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

var whatever = new Array(5);
Run Code Online (Sandbox Code Playgroud)

这会给你

[undefined, undefined, undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)

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

whatever.fill('');
Run Code Online (Sandbox Code Playgroud)

这会给你

["", "", "", "", ""]
Run Code Online (Sandbox Code Playgroud)

如果你想在一行中做到这一点:

var whatever = Array(5).fill('');
Run Code Online (Sandbox Code Playgroud)

  • new Array(2) 不会给你[未定义,未定义]。它为您提供了一个不可迭代的数组。 (4认同)
  • @JCF for...of 使用迭代器协议,因此它的行为与 forEach/map 不同。迭代器丢失空信息 (2认同)
  • @TomaszBłachut @JCF 对于投反对票的人,请记住,这个答案是在 4 年前给出的——当时,这个答案 100% 有效。ES6 和 ES7 分别直到 2016 年中期和 2018 年中期才开始向浏览器推出。在回答这个问题时,JS 版本是 ES5。如果您需要进一步证明这就是 ES5 的工作方式,只需启动一个较旧的 Chrome 实例(在给出此答案时,它是 v48)并运行“Array(5)”。您将看到以下输出:“[undefined x 5]”。 (2认同)
  • @jeffdill2最好在答案本身中添加新信息。评论并不总是被充分阅读。 (2认同)

man*_*439 5

如果您想使用某些值创建匿名数组,则可以使用此语法。

var arr = new Array(50).fill().map((d,i)=>++i)
console.log(arr)
Run Code Online (Sandbox Code Playgroud)