В настоящее время это консольное ведение журнала:
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 - это оба массива, которые с самого начала вставляют в них две карты. Массив 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 с соответствующим маститом, значением и точками, которые можно добавить вместе, чтобы определить победителя.
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)
dealRandomCard
?points
которая не определена (вы используете локальную версиюpoints
в циклах for).