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

标签 javascript arrays jslint

我读过的大多数关于 JavaScript 数组的教程(包括 w3schoolsdevguru )建议您可以通过使用 将整数传递给 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/

相关文章:

javascript - 处理循环变量的重复声明警告

javascript - 通过 gm 流式传输使用 Express.js 上传的文件以消除双写

javascript - CKEditor 单击时从标签中删除(选中)

javascript - querySelectorAll 查找哪个按钮被选中 JavaScript

java - 如何将数字存储在数组中?

Ruby 风格提示 : Avoid eval, 并保持清晰有序

javascript - 为什么 JSHINT 提示这是一个严重的违规行为?

javascript - 如何在不使用 for 循环的情况下迭代数组的一部分

javascript - Perl CGI 不包含 Javascript 文件

javascript - 如何将元素数组呈现为 <List> 中的 <Dialog>