【问题标题】:Declare a new array in JavaScript with a var as its size [closed]在 JavaScript 中声明一个新数组,其大小为 var [关闭]
【发布时间】:2021-05-18 10:57:08
【问题描述】:

对 JS 完全陌生,但需要在 atm 使用它。

在 C 语言中,我可以通过以下方式声明新数组:int A[10], B[A];

这样我可以创建自定义大小的变量数组。

是否可以用 JavaScript 做同样的事情?我需要制作一个具有变量大小的数组。 我试图做类似的事情:var n = 10; var A = new Array(n); 但它只是不起作用。 谢谢。

【问题讨论】:

  • “它不起作用”是什么意思? new Array(n) 肯定会为您创建一个带有 n 插槽的数组。
  • 在 JavaScript 中这样做没有什么意义,因为数组与 C 中的数组完全不同。使用new Array(10) 创建的数组可以容纳 100 或 1000 个元素。
  • @Pointy 所说的也是正确的——通常预分配一个数组或多或少是没用的。数组有点用词不当,在 JavaScript 中它们是动态分配的。具有预先分配的大小仅在少数处于边缘的情况下有用。创建给定大小的数组的代码并没有完全错误,但通常不需要这样做。
  • @Pointy,我很好奇,那有什么用处? (好像不合逻辑)
  • @Maggiorana 我知道您想要一个整数数组,请查看 var A = new Int32Array(10)its friends

标签: javascript arrays var


【解决方案1】:

要么

Array(n)

Array.from({length: n})  // Creates array from array-like or iterable.

但仍然可以推送新项目。

let arr = Array(5)  // [empty x 5]
arr[25] = 10        // [empty x 25, 10]

@Thomas 建议的性能方面 Array(n).fill()Array.from({length: n}) 快得多。

测量:

Array(500)                  // 0.009999959729611874. But it's sparse.
Array.from({length: 500})   // 0.0850000069476664
Array(500).fill(undefined)  // 0.01999997766688466

【讨论】:

  • Array.from() 很慢,因为它必须对传递的参数非常灵活,但至少返回的 Array 不是稀疏的。但是Array(n).fill() 在我看来还是更好。
  • 谢谢,添加到答案中。
猜你喜欢
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多