我有一個代表遊戲元素的6個不同單詞的基本數組。只是想知道如何將數組中的每個單詞的實例數量相乘。將數組項添加到數組X次
var gameItem = [cattle, wood, stone, metal, grain, craft];
也就是說,我想每個單詞的10個實例添加到數組中,我該怎麼做?秩序並不重要,因爲它會被洗牌。
我有一個代表遊戲元素的6個不同單詞的基本數組。只是想知道如何將數組中的每個單詞的實例數量相乘。將數組項添加到數組X次
var gameItem = [cattle, wood, stone, metal, grain, craft];
也就是說,我想每個單詞的10個實例添加到數組中,我該怎麼做?秩序並不重要,因爲它會被洗牌。
不要忘記,除非您定義每個變量,否則您的數組無法工作。但據我所知,這些都是文字,而不是變數。所以,正確的數組聲明是:
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
由於{「w」:1}部分給出了答案。對於其他人,謝謝,我使用循環和.push,沒有真正的性能問題。 –
你只需要一對夫婦的循環:
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
。
你可以這樣做:
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 - 保持簡單。
用於連接。 – StarPinkER
何嘗不是一種循環? – StarPinkER
@JermaineXu;我希望有一些不是性能密集的東西。 –
當您遇到性能問題時,請關注性能。 –