JavaScript básico - Conteo de cartas

Cuéntanos qué está pasando:
Resolví el conteo de cartas de esta manera, lo probe para ver los resultados y verificar lo que me piden se muestre, y si lo hace bien. pero freecodecamp no me acepta mi solución.
existe algún problema son la sintaxis del código, me equivoque ortograficamente?
Tu código hasta el momento

let count = 0;

function cc(card) {
  // Cambia solo el código debajo de esta línea
  if(card >= 2 && card <= 6){
    count++;
  }else if(card === 10 || card === "J" || card === "Q" || card === "K" || card === "A"){
    count--;
  }else if(count > 0){
    return count + " Bet";
  }else if(count <= 0){
    return count + " Hold";
  }

  return "Change Me";
  // Cambia solo el código encima de esta línea
}
cc(2); cc(3); cc(4); cc(5); cc(6);

Información de tu navegador:

El agente de usuario es: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50

Desafío: JavaScript básico - Conteo de cartas

Enlaza al desafío:

if (count > 0) {
    return count + " Bet";
  } else {
    return count + " Hold";
  }
1 Like

Hola,

Como te muestra zaklina, aunque no explica más, es el problema.

Estas usando varios else if para todas las acciones y debes separar la logica en 2 bloques:

  1. La lógica de la suma o resta del conteo según la carta (Que tienes bien)
  2. La lógica de qué resultado devuelves según el resultado de la lógica anterior.

Por lo tanto, el primero compruebas el paso 1 en un if y else y debes separar el segundo paso en otro if y else independiente.

De lo contrario ocurre que en el proceso actual solo está entrando en el primer if y segundo if.
Si te fijas en las comprobaciones te dice que tienes que devolver el contador con un espacio y “Bet” o “Hold” según el resultado porque nunca pasa por esos 2 últimos if

2 Likes

Mi español no es lo suficientemente bueno como para dar explicaciones

Podemos desglozar este ejercicio

Usando " switch/case "

let count = 0;
let word = "";
function cc(card) {
  // Only change code below this line
switch (card){
  case 2:
  case 3: 
  case 4:
  case 5: 
  case 6:
  count++;
  break;

  case 7:
  case 8:
  case 9:
  word = "Hold";
  break;

  case 10:
  case 'J':
  case 'Q':
  case 'K':
  case 'A':
  count--;
  break;

  default:
  return "Invalid";
  break;
}
  if(count > 0) {
    word = "Bet";
    return count + " " + word;
  }

  word = "Hold";
  return count + " " + word;

  // Only change code above this line
}

cc(2); cc(3); cc(7); cc('K'); cc('A');

O tambien:

Usando " if/else "

Yo haria el if de la siguiente manera:

En lugar de:

if (card >=2 && card <=6)
else if {card == 10 || (card >= 'A' && card <= 'Q')) 
//Ojo que la Q es la ultima de las letras en el abecedario. Llevan un orden lexico.

Combino ambos de esta forma:

if (card <=6) {
  count++;
}
else if (card >= '10')) {
  count--;
}

It is great that you solved the challenge, but instead of posting your full working solution, it is best to stay focused on answering the original poster’s question(s) and help guide them with hints and suggestions to solve their own issues with the challenge.

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.