Javascript 数字为1-20的数组

Javascript 数字为1-20的数组,javascript,arrays,Javascript,Arrays,我是javascript的新手。我之前正在解决一个问题,我需要一个包含数字1到20的数组 我是这样做的: var numberArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; 问题: var numberArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; 我忍不住认为这是不高效的(当然也不可扩展)。有没有一种方法可以创建一个数组,该数组自动填充1到

我是javascript的新手。我之前正在解决一个问题,我需要一个包含数字1到20的数组

我是这样做的:

var numberArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
问题:

var numberArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];

我忍不住认为这是不高效的(当然也不可扩展)。有没有一种方法可以创建一个数组,该数组自动填充1到20之间的顺序值,例如1到1000之间的顺序值?

您可以使用一个简单的循环来完成所需的操作

var numberArray = [];

for(var i = 1; i <= 20; i++){
    numberArray.push(i);
}

console.log(numberArray); 
var numberArray=[];
对于(var i=1;i,这里有一条直线:

var myArr = Array(20).join().split(',').map(function(a){return this.i++},{i:1});
或者稍微短一点:

var myArr = (''+Array(20)).split(',').map(function(){return this[0]++;}, [1]);
这两种方法都创建了一个包含20个空元素的空
数组
(即值
未定义
的元素)。在这样创建的
数组
上,无法应用
映射
方法1,因此
连接
(或字符串添加)和
split
trick将其转换为一个知道它的
数组。现在
map
回调(参见MDN链接)只不过是发送初始值的增量(
{i:1}
[1]
)返回到
数组的每个元素,然后,
myArr
包含从1到20的20个数值

附录:ES20xx

[...Array(21).keys()].slice(1);
Array.map
=>


1为什么不呢?看看这个,还有一个更深刻的解释

为什么不使用for循环而不是数组?你可以创建for循环,但是你可以只使用for循环…你想做什么?是的,但是结果听起来没什么用。如果你需要这个来做你的工作,答案是整个数组是不必要的(您可以在整数中设置范围,并使用
i+1
打印结果)。重点是,你永远不会需要这样规则的数组,因为你可以动态计算所需的值。哇,这很好,尽管我不知道它是如何工作的。我得到的另一个答案是,因为我使用了for循环。我必须深入研究这个:)您好@PhilPowis,我在我的答案中添加了一些解释,希望对您有所帮助。非常好-至少在Chrome中,10000000次迭代时,效率大约是最高效for循环解决方案的两倍。@KooiInc说“Array(20)不知道map方法”有点混乱,map方法实际上在Array(20)中。toString()==Array(20)。map(函数(a){return'a'}).toString()(参见此)@Ande:yes,重新编写了答案,添加了您的链接和另一个链接