如何在JavaScript中初始化数组的长度?

我在JavaScript数组上读过都建通过使用var test = new Array(4);语法将整数传递给Array构造函数来初始化具有一定长度的数组。

在我的js文件中广泛使用此语法后,我通过jsLint运行了其中一个文件,结果很糟糕:

错误:第1行第22个字符的问题:预期为')',而是显示为'4'。

var test = new Array(4);

第1行第23个字元的问题:预期为';' 而是看到')'。

var test = new Array(4);

第1行第23个字符处的问题:需要标识符,而看到了')'。

阅读完jsLint对其行为的解释之后,看起来jsLint并不真正喜欢new Array()语法,而是[]在声明数组时更喜欢。

所以我有几个问题:

首先,为什么?我使用new Array()语法代替会冒任何风险吗?我应该注意浏览器的不兼容性吗?

其次,如果我切换到方括号语法,是否有任何方法可以声明一个数组并将其长度全部设置在一行上,或者我必须执行以下操作:

var test = [];

test.length = 4;

回答:

  • Array(5)给你一个长度为 5 但没有值的数组,因此你不能迭代它。
  • Array.apply(null, Array(5)).map(function () {})为您提供一个长度为 5 且未定义为值的数组,现在可以对其进行迭代。
  • Array.apply(null, Array(5)).map(function (x, i) { return i; })为您提供一个长度为 5 且值为 0、1、2、3、4 的数组。
  • Array(5).forEach(alert)什么都不做,Array.apply(null, Array(5)).forEach(alert)给你5个警报
  • ES6给我们Array.from所以现在你也可以使用Array.from(Array(5)).forEach(alert)
  • 如果你想用某个值初始化,这些很高兴知道…

    Array.from('abcde')Array.from('x'.repeat(5))

    或者Array.from({length: 5}, (v, i) => i) // gives [0, 1, 2, 3, 4]

以上是 如何在JavaScript中初始化数组的长度? 的全部内容, 来源链接: utcz.com/qa/433718.html

回到顶部