我正在上 codecademy.com 上的数组类(class)。我应该编写嵌套循环,将每种花色的每张牌放入数组中的一副牌中。
我真的把事情搞砸了。这是我尝试过的一种组合,但不起作用。唯一表明我已经接近的迹象是它返回“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: [ [rank[j] ] ]
当设置了cardArray[0][0]时,它会将cardArray[0]覆盖为索引为0且包含ranks[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);
}
}
关于JavaScript:在嵌套循环中分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230790/