数组函数 'push' 和 'splice' Javascript

Array functions 'push' and 'splice' Javascript

黑桃 1,方块 1,梅花 1,红心 1,黑桃 2,方块 2,梅花 2,红心 2,黑桃 3,方块 3,梅花 3,3红桃4,方块4,梅花4,红心4,黑桃5,方块5,梅花5,红心5,黑桃6,方块6,梅花6,红心6 ,黑桃7,方块7,梅花7,红心7,黑桃8,方块8,梅花8,红心8,黑桃9,方块9,梅花9,红心9,10黑桃,10 个方块,10 个梅花,10 个红心

,

[这是什么节目returns]

我正在尝试在 JavaScript 中制作一个允许某人玩扑克的程序。我在可汗学院使用 ProcessingJS 终端。到目前为止,以下是我的完整程序。它应该做的是创建一个名为 deck 的数组,其中包含一副纸牌中所有纸牌(不包括花牌)的名称。该程序的那一部分有效。下一部分尝试创建一个名为 current 的新数组,它是 deck 的精确副本。然后它尝试打印出电流,并且成功了。

最后一个 for 循环是导致问题的原因。它试图从当前随机抽取一张牌并将其复制到另一个名为玩家的数组中,该数组应该是玩家的手。然后它会尝试从数组 current 中删除该卡。

然而,当它试图打印数组播放器时,它只打印三个逗号。我不知道问题出在哪里,我看过许多谈论推送和拼接的网站。我真的不知道哪里出了问题。

同样,我希望程序显示玩家的手牌。感谢您的帮助。

var deck = [];
var current = [];
var enemy = [];
var player = [];
var suits = ['spades', 'diamonds', 'clubs', 'hearts'];

for (var i = 1; i < 11; i++) {
    for (var x = 0; x < 4; x++) {
        if (i <= 10) {
            deck.push(i + ' of ' + suits[x]);
        }
    }
}

for (var c = 0; c < 40; c++) {
    current[c] = deck[c];
}

println(current);
var y;

for (var a = 0; a < 4; a++) {
    y = random(0, (current.length - 1));
    player.push(current[y]);
    current.splice(y);
}

println(player);
    

为什么不使用 splice 来简化它呢?

据我了解,您正在使用 random 抓牌。所以,只需将该卡推到 player.push(current[y]) 的玩家手上即可。

此外,当您调用 current.splice(y) 时,我认为您不只是删除抽取的卡片。这会删除牌组 after the index y 中的每张牌。将其更改为 current.splice(y, 1).