3

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

4

2 回答 2

11

这是一个单线:

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 个空元素(即具有 value的元素undefined)的空元素。在这样创建Arraymap方法上不能应用1,因此join(或字符串添加)和split技巧将其转换为Array知道它的方法。现在map回调(参见 MDN 链接)只是为 的每个元素发送一个初始值({i:1}或)的增量,然后包含从 1 到 20 的 20 个数值。[1]ArraymyArr

附录:ES20xx

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

Array.map=>另见...

1为什么不呢?请参阅此SO 答案,以及答案以获得更深刻的解释

于 2013-10-12T17:54:01.537 回答
9

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

var numberArray = [];

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

console.log(numberArray); 
于 2013-10-12T17:46:35.377 回答