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

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

我在JavaScript中使用数组(包括w3schoolsdevguru)阅读的大多数教程都建议您可以使用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;


万千封印
浏览 5834回答 3
3回答

慕妹3146593

为什么要初始化长度?从理论上讲,没有必要这样做。它甚至可能导致令人困惑的行为,因为所有使用它length来查明数组是否为空的测试都会报告该数组不为空。一些&nbsp;测试表明,如果之后填充数组,设置大型数组的初始长度可以更有效,但性能增益(如果有的话)似乎因浏览器而异。jsLint不喜欢new Array()因为构造函数不明确。new&nbsp;Array(4);创建一个长度为&nbsp;4&nbsp;的空数组。但是new&nbsp;Array('4');创建一个包含该值&nbsp;的数组'4'。关于你的评论:在JS中,你不需要初始化数组的长度。它动态增长。您可以将长度存储在某个变量中,例如var&nbsp;data&nbsp;=&nbsp;[];var&nbsp;length&nbsp;=&nbsp;5;&nbsp;//&nbsp;user&nbsp;defined&nbsp;lengthfor(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;data.push(createSomeObject());}

慕尼黑8549860

Array(5)&nbsp;给你一个长度为5但没有值的数组,因此你不能迭代它。Array.apply(null, Array(5)).map(function () {})&nbsp;给你一个长度为5且未定义为值的数组,现在它可以迭代。Array.apply(null, Array(5)).map(function (x, i) { return i; })&nbsp;为您提供长度为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)如果你想用一定的值进行初始化,这些都是很好的知道......&nbsp;Array.from('abcde'),Array.from('x'.repeat(5))或者Array.from({length: 5}, (v, i) => i) &nbsp; // gives [0, 1, 2, 3, 4]

守着一只汪

使用ES2015,.fill()您现在可以简单地执行://&nbsp;`n`&nbsp;is&nbsp;the&nbsp;size&nbsp;you&nbsp;want&nbsp;to&nbsp;initialize&nbsp;your&nbsp;array//&nbsp;`0`&nbsp;is&nbsp;what&nbsp;the&nbsp;array&nbsp;will&nbsp;be&nbsp;filled&nbsp;with&nbsp;(can&nbsp;be&nbsp;any&nbsp;other&nbsp;value)Array(n).fill(0)这比简洁得多&nbsp;Array.apply(0, new Array(n)).map(i => value)可以0放入in&nbsp;.fill()并运行不带参数,这将填充数组undefined。(但是,这将在Typescript中失败)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript