簡體   English   中英

JavaScript:在嵌套循環中分配給數組

[英]JavaScript: assigning to array in nested loops

我正在上關於數組的codecademy.com課程。 我應該編寫嵌套循環,將每套西裝的每張紙牌都放在一排紙牌中。

我真的搞砸了。 這是我嘗試過的一種無效的組合。 我有點接近的唯一指示是它返回“ 52”,因此至少有52個對象進入數組。 誰能指出我做錯了什么?

   //array 1: the suits
var suits = ["clubs","hearts","diamonds","spades"];

//array 2: the ranks
var ranks = [2,3,4,5,6,7,8,9,10,"J","Q","K","A"];

//using for loops, modify the "deck" array so that it becomes a 
//two-dimensional array that stores every card in the deck; 
//e.g. [1, "clubs"], [2, "clubs"],etc...["A", "spades"]
var deck = [];

for(i = 0; i < suits.length; i++){
    for (j = 0; j < ranks.length; j++){
        var cardArray = [];
        cardArray[0] = suits[i];
        cardArray[0][0] = ranks[j];
        deck.push(cardArray);
    }
}

每次迭代時,都會將一個新數組添加到卡片組,如下所示:

cardArray:[[ranks [j]]]

設置cardArray [0] [0]時,它會將cardArray [0]覆蓋為索引為0且包含rank [j]的數組。 而是將cardArray [0]設置為合適,將cardArray [1]設置為排名。

cardArray[0] = suits[i];
cardArray[1] = ranks[j];
deck.push(cardArray);

結果是:

for (var i = 0; i < suits.length; i++){
    for (var j = 0; j < ranks.length; j++){
        var cardArray = [];
        cardArray[0] = suits[i];
        cardArray[1] = ranks[j];
        deck.push(cardArray);
    }
}

您應該為循環計數器使用var聲明。 您有問題的代碼是

cardArray[0] = suits[i];
cardArray[0][0] = ranks[j];

做類似的事情

var foo = "clubs";
foo[0] = "J";

這顯然是行不通的。 我想你想要的是

var deck = [];

for(var i = 0; i < suits.length; i++){
    var cardArray = [];
    for (j = 0; j < ranks.length; j++){
        var twoCards = [];
        twoCards[0] = suits[i];
        twoCards[1] = ranks[j];
        cardArray.push(twoCards);
 //     // or the same thing as this loop body, shorter:
 //     cardArray.push([suits[i], ranks[j]]);
    }
    deck.push(cardArray);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM