我是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之间的连续值的数组?
答案 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...