洗牌/显示卡到21点游戏(Javascript)
你知道为什么“card2”会随机将一个对象放入数组中吗?它应该始终将对象放入数组中洗牌/显示卡到21点游戏(Javascript),javascript,loops,blackjack,Javascript,Loops,Blackjack,你知道为什么“card2”会随机将一个对象放入数组中吗?它应该始终将对象放入数组中 const卡=[ { 卡片:“🂡”, 值:“1” }, { 卡片:“🂢”, 值:“2” }, { 卡片:“🂣”, 值:“3” }, { 卡片:“🂤”, 值:“4” }, { 卡片:“🂥”, 值:“5” }, { 卡片:“🂦”, 值:“6” }, { 卡片:“🂧”, 值:“7” }, { 卡片:“🂨”,
const卡=[
{
卡片:“🂡”,
值:“1”
},
{
卡片:“🂢”,
值:“2”
},
{
卡片:“🂣”,
值:“3”
},
{
卡片:“🂤”,
值:“4”
},
{
卡片:“🂥”,
值:“5”
},
{
卡片:“🂦”,
值:“6”
},
{
卡片:“🂧”,
值:“7”
},
{
卡片:“🂨”,
值:“8”
},
{
卡片:“🂩”,
值:“9”
},
{
卡片:“🂪”,
值:“10”
}
];
var deck=[];
shuffleDeck=()=>{
var tempDeck=[…卡片];
var card1=[0];
var card2=[0];
而(0!==tempDeck.length){
var randomIndex=Math.floor(Math.random()*tempDeck.length);
card1=临时拼接(随机索引,1);
card2=临时拼接(随机索引,1);
卡片组=[…卡片1,…卡片2];
}
}
shuffleDeck();
对于(var i=0;i我想问题应该更清楚……但是运行您的should并认为代码应该洗牌牌组,我想您的错误在那一行deck=[…card1,…card2]因为你在一个循环中,你一次只在你的新牌组中放入两张牌,所以在下一次交互中,他们会忽略最后的值并将其覆盖,你应该使用牌组。按在牌组中添加新牌
const卡=[
{
卡片:“🂡”,
值:“1”
},
{
卡片:“🂢”,
值:“2”
},
{
卡片:“🂣”,
值:“3”
},
{
卡片:“🂤”,
值:“4”
},
{
卡片:“🂥”,
值:“5”
},
{
卡片:“🂦”,
值:“6”
},
{
卡片:“🂧”,
值:“7”
},
{
卡片:“🂨”,
值:“8”
},
{
卡片:“🂩”,
值:“9”
},
{
卡片:“🂪”,
值:“10”
}
];
var deck=[];
shuffleDeck=()=>{
var tempDeck=[…卡片];
var card1=[0];
var card2=[0];
而(0!==tempDeck.length){
var randomIndex=Math.floor(Math.random()*tempDeck.length);
card1=临时拼接(随机索引,1);
card2=临时拼接(随机索引,1);
甲板。推动(…卡片1,…卡片2);
}
}
shuffleDeck();
对于(变量i=0;i }
您的代码中有两件事需要解决:
在while
中,您只需设置randominindex
一次,并将其用于card1
和card2
,但当您设置card1
时,它使用splice
并删除该索引,因此card2未定义。
修复在设置card1
后再次设置randominindex
在for
循环中,您需要i
而不是我无法理解主要问题,您能更清楚吗?@DiegoVinícius如果您多次运行代码段,您将看到数组“deck”将显示其内容(card1和card2)但它不会总是显示卡片2。如果你只想显示卡片1,你应该在上面添加一些条件,他们会从你的临时牌堆中随机获得2张卡片,并且总是试图在实际牌堆中添加2张卡片,但有时会得到错误的索引,只需添加一张即可