我读过的大多数关于 JavaScript 数组的教程(包括 w3schools 和 devguru )建议您可以通过使用 将整数传递给 Array 构造函数来初始化具有特定长度的数组var test = new Array(4);
语法。
在我的 js 文件中大量使用此语法后,我通过 jsLint 运行其中一个文件。 ,它吓坏了:
Error: Problem at line 1 character 22: Expected ')' and instead saw '4'.
var test = new Array(4);
Problem at line 1 character 23: Expected ';' and instead saw ')'.
var test = new Array(4);
Problem at line 1 character 23: Expected an identifier and instead saw ')'.
看完jsLint's explanation of its behavior ,看起来 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)//给出 [0, 1, 2, 3, 4]
关于javascript - 如何在 JavaScript 中初始化数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852017/