数字1-20的数组

时间:2013-10-12 17:44:32

标签: 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];

问题:

我不禁认为这不高效(当然也不具备可扩展性)。有没有办法创建一个自动填充1到20或1和1000之间的连续值的数组?

2 个答案:

答案 0 :(得分:8)

你可以使用一个简单的循环来做你想做的事情;

var numberArray = [];

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

console.log(numberArray); 

答案 1 :(得分:6)

这是一个oneliner:

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]);

两种方法都创建一个空的Array,其中包含20个空元素(即值为undefined的元素)。在如此创建的Array上,map方法无法应用 1 ,因此join(或字符串添加)和split技巧会将其转换为知道它的Array。现在,map回调(请参阅MDN链接)只会为{i:1}的每个元素返回初始值([1]Array)的增量,之后,myArr包含从1到20的20个数值。

附录:ES20xx

[...Array(21).keys()].slice(1);

Array.map =&gt; See also...

1 为什么不呢?有关更深刻的解释,请参阅此SO answerthis one