Recientemente comencé a aprender a programar con JavaScript, así que pensé que la práctica en CodeWars sería un buen lugar para aprender. Estoy apilado en este kata en particular durante días, ¿alguien puede decirme qué está mal con mi código?
Las pruebas deben devolver falso si la caminata es demasiado corta, demasiado larga y no lo devuelve al inicio, y devolver verdadero para caminata válida. Hasta ahora, mi código devuelve falso si la caminata es demasiado corta o demasiado larga, y devuelve verdadero si la caminata es válida, pero falla la prueba para volver a comenzar y el retorno que obtengo es 'El valor no es lo que se esperaba' .
function isValidWalk(walk) { if (walk.length === 10) {return true} else {return false}; let north = 0; let south = 0; let east = 0; let west = 0; for (i=0; i<walk.length; i++) { if (walk[i] = 'n') {return north++} else if (walk[i] == 's') {return south++} else if (walk[i] == 'e') {return east++} else if (walk[i] == 'w') {return west++} }; if ((north == south) && (west == east)) {return true} else {return false} };Siempre regresa en la primera o segunda línea de la función. Elimina el return true; part allí, y su código debería funcionar.
También tiene return cada vez que incrementa una dirección, así que elimínelo también.
También hubo un single accidental = for walk[i] == 'n' .
function isValidWalk(walk) { if (walk.length !== 10) return false; let north = 0; let south = 0; let east = 0; let west = 0; for (i=0; i<walk.length; i++) { if (walk[i] == 'n') north++; else if (walk[i] == 's') south++; else if (walk[i] == 'e') east++; else if (walk[i] == 'w') west++; }; if ((north == south) && (west == east)) return true; return false; }; // Test cases provided by Codewars console.log(isValidWalk(['n','s','n','s','n','s','n','s','n','s']), 'should return true'); console.log(isValidWalk(['w','e','w','e','w','e','w','e','w','e','w','e']), 'should return false'); console.log(isValidWalk(['w']), 'should return false'); console.log(isValidWalk(['n','n','n','s','n','s','n','s','n','s']), 'should return false');