2013-02-04 17 views
0

我有一個代表遊戲元素的6個不同單詞的基本數組。只是想知道如何將數組中的每個單詞的實例數量相乘。將數組項添加到數組X次

var gameItem = [cattle, wood, stone, metal, grain, craft]; 

也就是說,我想每個單詞的10個實例添加到數組中,我該怎麼做?秩序並不重要,因爲它會被洗牌。

+6

何嘗不是一種循環? – StarPinkER

+0

@JermaineXu;我希望有一些不是性能密集的東西。 –

+0

當您遇到性能問題時,請關注性能。 –

回答

4

不要忘記,除非您定義每個變量,否則您的數組無法工作。但據我所知,這些都是文字,而不是變數。所以,正確的數組聲明是:

var newGameItem = ["cattle", "wood", "stone", "metal", "grain", "craft"] 

要重複陣列的10倍,你可以使用一個for循環,陣列方法concat()

var newGameItem = []; 
for(var i=0 ; i<10 ; i++) { 
    newGameItem = newGameItem.concat(gameItem); 
} 

> newGameItem : ["cattle", "wood", "stone", "metal", "grain", "craft", "cattle" ... ] 

我不知道什麼是你這樣的想法,但是,如果要存儲這些類型的元素一樣,球員有1種牛,12木,20石,等... 你或許應該有更好的數據結構,像這樣:做gameItem.wood

var gameItem = {"cattle" : 1, "wood" : 12, "stone" : 20, "metal" : 0, "grain" : 0, "craft" : 0 }; 

所以,你得到的結果> 12

+0

由於{「w」:1}部分給出了答案。對於其他人,謝謝,我使用循環和.push,沒有真正的性能問題。 –

1

你只需要一對夫婦的循環:

function dupElements(arr, n) { 
    for (var i = 0, len = arr.length; i < len; i++) { 
     for (var j = 0; j < n; j++) { 
      arr.push(arr[i]); 
     } 
    } 
} 

dupElements(gameItem, 10); 

通過初始元素外循環週期。內部循環增加了每個副本的n

1

你可以這樣做:

var gameItem = ['cattle', 'wood', 'stone', 'metal', 'grain', 'craft']; 
var doublearr = gameItem.concat(gameItem); //x2 
gameItem = doublearr.concat(doublearr);//x4 
gameItem = gameItem.concat(gameItem);//x8 
gameItem = gameItem.concat(doublearr);//x10 
alert(gameItem);  

將數組本身,直到到達最接近^ 2(下 - 在我們的情況下,8 = 2^3),然後添加其餘部分。

我發佈了這個解決方案,因爲你在其中一個評論中寫道,你希望某些東西不是性能密集型的。但是我同意其他人的看法,它更易於維護一個簡單的for循環。所以如果你只有x10 - 保持簡單。

+0

用於連接。 – StarPinkER