Javascript - 代码复制的比我需要的要多



尝试添加新方法

我正在尝试在玩家/庄家手中各添加两张牌,但是当我记录它时:

[ { suit: '♠', value: 'A', points: 11 } ]
[ { suit: '♠', value: 'A', points: 11 },
{ suit: '♦', value: 10, points: 10 } ]

为什么我返回 3 个对象而不是 2 个对象?

const dealRandomCard = () => {
return deckOfCards.splice(Math.floor(Math.random() * 
deckOfCards.length), 1)[0];
}
// console.log(dealRandomCard());

for (let i = 0; i <= 2; i++) {
playerHand.push(dealRandomCard());
dealerHand.push(dealRandomCard());
console.log(playerHand);
// console.log(dealerHand);
}
for (let i = 0; i < 2; i++) {
playerHand.push(dealRandomCard());
dealerHand.push(dealRandomCard());
console.log(playerHand);
}

你的循环应该是for (let i = 0; i < 2; i++)而不是for (let i = 0; i <= 2; i++)

这需要您进行额外的迭代,因为您从02这是3的长度......[0,1,2] = 3.

还有这个:return deckOfCards.splice(Math.floor(Math.random() * deckOfCards.length), 1)[0];

如果这让你超过 1,你最终会得到 3,因为你的deck包含 1 + 一个 2 的数组,正如@Ricky Mo所指出的那样

您在每次迭代中都会调用console.log()。每次添加一张卡片时,您都会打印一次。给定的输出实际上是两个数组,从两次迭代中打印出来。第一个有 1 张牌,第二个有 2 张牌。仔细看[]

第一次迭代:

[ { suit: '♠', value: 'A', points: 11 } ]

第二次迭代:

[ { suit: '♠', value: 'A', points: 11 },
{ suit: '♦', value: 10, points: 10 } ]

最新更新