2013-10-12 27 views
1

我是javascript新品。餘物通過問題工作較早地方,我需要的陣列,其中包括數字1直通20.帶數字的數組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

爲什麼不使用for循環而不是數組? –

+0

你可以做一個for循環,但你可以使用一個for循環...你想做什麼? – Sergio

+1

是的,但結果聽起來不太有用。 – 2013-10-12 17:46:58

回答

6

你可以使用一個簡單的循環來做你想做的事情;

var numberArray = []; 

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

console.log(numberArray); 
3

這裏的一個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不能應用於,所以join(或字符串添加)和split特技其轉換到Array,知道它。現在map回調(見MDN鏈路)什麼也不做比發送初始值({i:1}[1])的增量背面爲Array的每個元素更多,並且在這之後,myArr含有1至20

20個數值

Array.map =>See also...

爲什麼呢?看到這個SO answerthis one爲更深刻的解釋

+0

哇,這很漂亮,即使我不明白它是如何工作的。上面的其他答案是我得到的,因爲我使用了for循環。我將不得不深入這個:) –

+0

嗨@PhilPowis,我給我的答案增加了一些解釋,希望它可以幫助你。 – KooiInc

+1

非常好 - 在10000000次迭代中效率最高的循環解決方案的效率是它的兩倍,至少在Chrome中是這樣。 – cori