繁体   English   中英

数组函数 '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

,,,

[这是程序返回的内容]

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

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

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

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

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);
    

为什么不直接简化而不使用拼接呢?

据我了解,您正在使用random抽牌。 因此,只需使用player.push(current[y])将该牌推到玩家手上。

另外,当您调用current.splice(y)时,我认为您不会只删除已绘制的卡片。 这会删除索引 y 之后的牌组中的每张牌。 将其更改为current.splice(y, 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM