gpt4 book ai didi

Javascript - 减少数组上的方法。将卡片的点值加在一起得到总数

转载 作者:行者123 更新时间:2023-11-30 14:20:42 24 4
gpt4 key购买 nike

目前是控制台日志:

14
16
[ { suit: '♣', value: 'J', points: 10 },
{ suit: '♥', value: 4, points: 4 } ]
[ { suit: '♥', value: 'K', points: 10 },
{ suit: '♣', value: 6, points: 6 },
{ suit: '♠', value: 'J', points: 10 } ]
0[object Object][object Object][object Object]

我只关心最后 3 个被记录的对象。 10、6、10 的点数,这应该给我 26。

dealerHand 和 playerHand 都是从头开始压入 2 张牌的数组。 dealerHand数组在总点数小于17时会继续“打牌”或加牌。

添加第三张卡片后,它记录 0 并返回对象数组。

我相信 reduce 方法是获取数组总数的好方法,但我不确定我遗漏了什么。

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

// console.log(dealRandomCard());

//////////////////////////////////////////////////////////////
// DEAL 2 CARDS TO EACH SIDE //
//////////////////////////////////////////////////////////////
for (let i = 0; i < 2; i++) {
playerHand.push(dealRandomCard());
dealerHand.push(dealRandomCard());
}

dealRandomCard 方法只是从我定义为 deckOfCards 的数组中返回一张随机纸牌,具有适当的花色、值(value)和可以加在一起以确定获胜者的点数。

let playerPoints = 0,
dealerPoints = 0;

for (let { points } of playerHand) {
playerPoints += points;
}

for (let { points } of dealerHand) {
dealerPoints += points
}
console.log(playerPoints);
console.log(dealerPoints);

/////////////////////////////////////////////////////////////

let totalPoints;

if (dealerPoints < 17) {
dealerHand.push(dealRandomCard());

totalPoints += points

} else {

return

}

let totalDealerPoints = 0;

// for (let card of dealerHand) {

totalDealerPoints += points;

totalDealerPoints = dealerHand.reduce((total , amount) => total +
amount, 0);
// }

// return totalDealerPoints
console.log(playerHand);
console.log(dealerHand);
console.log(totalDealerPoints);

/////////使用正确的工作代码修订/////////////

 let totalPoints = 0;

if (dealerPoints < 17) {
dealerHand.push(dealRandomCard());

totalPoints += points

} else {

return

}



// for (let card of dealerHand) {

totalPoints += points;

totalPoints = dealerHand.reduce((total , card) => total +
card.points, 0);

最佳答案

似乎缺少代码,因为在这样的行中:

    dealerHand.push(dealRandomCard());
totalPoints += points

points 未在当前范围内的任何位置定义,totalPoints 未初始化为零。但由于这些值并没有真正被使用,我不确定该说些什么。

关于reduce,每次通过都会得到一张卡片,所以需要加上card.points:

let dealerHand = [ 
{ suit: '♥', value: 'K', points: 10 },
{ suit: '♣', value: 6, points: 6 },
{ suit: '♠', value: 'J', points: 10 } ]

let totalPoints = dealerHand.reduce((total, card) => total + card.points, 0)
console.log(totalPoints)

关于Javascript - 减少数组上的方法。将卡片的点值加在一起得到总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com