2015-05-04 132 views
0

所以我想將兩個數組合併成一個對象。更具體地說,我正在使用JavaScript創建一副撲克牌。我已經創建了兩個數組(如下所示),並且正在尋找一些關於如何合併它們的幫助,以便新對象的格式如下{suit:'hearts',value:'A'}。我相信我需要做一個for循環,但一直無法使其工作。任何人有任何建議?將兩個數組合併到一個對象中

// ...試圖合併這裏兩個數組...

function deck_o_cards() { 
    var values = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']; 
    var suits = ['hearts', 'diamonds', 'clubs', 'spades']; 

    var cards = [ ]; 
    for(i=0, i< suits.length, i++){ 
     var newSuit = suits[i]; 
     for(a=0; a< values.length, a++) { 
      var newValue= values[a]; 
      newArray=[newSuit, newValue]; 
      cards.push(newArray); 
     } 
    } 
} 
+0

循環是一個好的開始,你能告訴我們你試過了什麼嗎?順便說它是一項功課?如果是這樣,將它指定爲文本的一部分總是好的,這樣人們可以更好地指導你。 –

+0

您對添加的循環代碼有問題嗎?你想要一個[多維數組](http://stackoverflow.com/questions/7545641)? –

+0

感謝大家的幫助。這是一個家庭作業問題。我現在已經能夠創造出甲板。再次感謝 – Matt

回答

1

您需要使用遍歷所有的值數組迭代,然後內部的每個迭代還遍歷數組西裝在一個循環。您需要兩個不同的索引才能使nested loops工作。

數組爲零索引,因此索引將從零開始,並在索引達到length of the array時停止。

這裏是一個嵌套循環的一個例子,但應使用陣列長度屬性,而不是圖13和4

for(var i = 0; i < 13; i++) { 
    for(var j = 0; i < 4; i++) { 
    ... 
    } 
} 

內環內則可以使用與來自每個陣列的值創建卡對象單獨的索引並將其添加到您的卡陣列中,方法是將其分配給cards[cards.length] = { },從而將新項目添加到陣列末尾。

您也可以使用Array.map()Array.push()函數完成相同的操作來替換循環和賦值操作。

0

你幾乎在那裏。問題在於循環內的代碼。當你真正需要一個對象時,你正在創建一個數組。試試這個您的循環中:

var newValue = values[a]; 
var newCard = {suit: newSuit, value: newValue}; 
cards.push(newCard); 

還要注意使用var newCard代替newArrayvar避免將對象添加到全局範圍。

相關問題