尝试添加新方法
我正在尝试在玩家/庄家手中各添加两张牌,但是当我记录它时:
[ { 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++)
这需要您进行额外的迭代,因为您从0
到2
这是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 } ]