Esta es la actividad de contar cartas de freeCodeCamp. https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/counting-cards
mi solución fue
let count = 0; function cc(card) { // Only change code below this line if (card = 2 || 3 || 4 || 5 || 6) { count + 1; } else if (card = 7 || 8 || 9) { return; } else if (card = 10, "J", "Q", "K", "A") count - 1; } if (count > 0) { return count + " " + "Bet"; } else if { return count + " " + "Hold"; } // Only change code above this line } cc(2); cc(3); cc(7); cc('K'); cc('A');Revisé la solución y parecía similar. ¿Por qué no funcionó?
Fueron necesarias algunas modificaciones para que este código funcionara.
= es el operador de asignación mientras que == es el operador de comparación.else if se puede reemplazar con simplemente else si no hay ninguna condición.else if (card = 10, "J", "Q", "K", "A") no tenía paréntesis de cierre o apertura.return en else if (card == 7 || 8 || 9) { y en su lugar use count += 0|| O operador como esta card == 7 || card == 8 y no como card == 7 || 8count++ y count-- en lugar de count + 1 y count - 1 Después de todos estos cambios, el siguiente código funciona bien. let count = 0; function cc(card) { // Only change code below this line if (card == 2 || card == 3 || card == 4 || card == 5 || card == 6) { count++; } else if (card == 7 || card == 8 || card == 9) { count += 0; } else if (card == 10|| card == "J"|| card == "Q"|| card == "K"|| card == "A"){ count--; } if (count > 0) { return count + " " + "Bet"; } else { return count + " " + "Hold"; } } cc(2); cc(3); cc(7); cc('K'); cc('A');= se usa para asignar un valor y no para hacer una comparación. En javascript usamos == o === para hacer una comparación, y también count - 1 no actualizará el recuento. use count = count - 1 o count++
let count = 0; function cc(card) { // Only change code below this line if ( card >= 2 && card <= 6) { count = count + 1; } else if (card >= 7 && card <= 9) { return; } else if (card === 10 || card === "J" || card === "Q" || card === "K" || card === "A") count = count - 1; } if (count > 0) { return count + " " + "Bet"; } else if { return count + " " + "Hold"; } // Only change code above this line } cc(2); cc(3); cc(7); cc('K'); cc('A');Hay dos problemas principales con su código.
if la condición Tu tarjeta de condición if card = 2 || 3 || 4 || 5 || 6 no funciona como crees que lo hace. Tendrías que usar car === 2 || card === 3 || car === 4 || card === 5 || car === 6 . No puede usar el operador de asignación = así. En su lugar, debe utilizar el operador de strict comparison . Es aún más fácil usar una matriz e include includes() como este [2, 3, 4, 5, 6].includes(card) .
count no esta actualizado Debe asignar el nuevo valor para que count cuando lo incremente o disminuya. Puede usar count++ en lugar de count + 1 , que es el equivalente a count = count + 1 .
let count = 0; function cc(card) { // Only change code below this line if ([2, 3, 4, 5, 6].includes(card)) { count++; } else if ([10, "J", "Q", "K", "A"].includes(card)) { count--; } if (count > 0) return `${count} Bet`; return `${count} Hold`; } cc(2); cc(3); cc(7); cc('K'); cc('A');