JavaScript:在嵌套循环中分配给数组

标签 javascript

我正在上 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/

相关文章:

javascript - 如何检查 Google 云端硬盘中是否存在文件(按名称)?

javascript - 从数组中删除所有出现的数字

javascript - 随机 API 输出?

javascript - VideoSphere 不在 A 帧中播放视频,即使遵循了其他指导也是如此

javascript - jQuery 确认页面离开

javascript - 为什么我们在此表达式中使用 _ str.replace(/[\W_]/g, '' ).toLowerCase();我们也可以使用/[\W]/g 但为什么我们要使用下划线呢?

javascript - 在 Action 重定向 mvc 期间显示等待动画

java - Action 映射触发 Controller 中的错误方法

javascript - 如何使两个函数在单击时使用react

JavaScript 循环使用设定数量的步骤,同时跳过特定步骤