¡Compañeros programadores! súper novato aquí. me cuesta comprender
card['card ' + i] + ien el siguiente problema. ¿Alguien puede ayudarme por qué hay un +i en la declaración else, por favor?
Su cliente actual es un casino que necesita que usted arregle su programa de conteo de cartas Black-Jack. La función debe tomar una matriz de objetos, cada objeto es una carta que se repartió y su valor es el número de la carta.
La forma en que funciona el conteo de cartas es que cada carta tiene un valor ponderado . Las cartas 2 a 6 valen un punto; 7, 8 y 9 valen cero; y los 10, las figuras y los ases valen menos uno. Este tipo de sistema de conteo de cartas se llama conteo HiLo . Cuando cuentes una baraja estándar de 52 cartas, notarás que la cuenta subirá y bajará y siempre terminará en cero si contaste correctamente.
Se supone que la función
cardCountertoma una matriz de objetos de tarjeta y devuelve el recuento (valor ponderado) de las tarjetas. No parece estar produciendo resultados precisos, ¡vea si puede arreglarlo antes de que los tiburones de cartas ganen a la casa!
function cardCounter(array) { var count = 0; for (var i = 0; i < array.length; i++) { var card = array[i]; if (card['card ' + i] >= 2 && card['card ' + i] <= 6) { count++; } else if (card['card ' + i] + i >= 10 || card['card ' + i] + i === 'face or ace') { count--; } } return count; } function assertEquals(actual, expected, testDescription) { if (actual !== expected) { console.log('Test failed:', testDescription); return; } console.log('test passed'); return; } var dealtCards = [ { 'card 0': 2 }, { 'card 1': 6 }, { 'card 2': 8 }, { 'card 3': 'face or ace' } ]; var actual = cardCounter(dealtCards); var expected = 1; assertEquals(actual, expected, 'function should return correct HiLo count.'); var dealtCards2 = [ { 'card 0': 'face or ace' }, { 'card 1': 9 }, { 'card 2': 8 }, { 'card 3': 'face or ace' } ]; var actual2 = cardCounter(dealtCards2); var expected2 = -2; assertEquals(actual2, expected2, 'function should return correct HiLo count.');En realidad estás 100% correcto. El + i que encontré al final de card['card ' + i] + i & card['card ' + i] + i es un error. De hecho, la razón por la que se aprueban las pruebas es porque la colección de cartas que se están utilizando tienen un 8 y un 9 y ese + i adicional en realidad hace que se encuentre el conteo correcto puramente por coincidencia.
Si agrega un caso de prueba adicional que se ve así:
var dealtCards3 = [ { 'card 0': 'face or ace' }, { 'card 1': 9 }, { 'card 3': 'face or ace' } ]; var actual3 = cardCounter(dealtCards2); var expected3 = -2; assertEquals(actual3, expected3, 'function should return correct HiLo count.');Lanza un error.
Los + i son incorrectos y deben eliminarse.