así que estoy tratando de construir un juego del ahorcado de JavaScript y tengo un problema con mi función checkMatch. lo que estoy tratando de lograr es que verifique con la matriz hiddenChoice y solo ejecute el código en la declaración else if si this.id no está en la matriz en absoluto. actualmente, si hiddenChoice = apple y this.id = l devolverá 'adivinar de nuevo' 3 veces antes de devolver que 'encontraste una letra' cuando llega a l, lo que afecta mi conteo de conjeturas. Todos los registros de la consola están allí para que pudiera averiguar qué estaba pasando. gracias por la ayuda.
function checkMatch(){ console.log(hiddenChoice) for (let k = 0; k < hiddenChoice.length; k++){ if (this.id === hiddenChoice[k]){ console.log('you found a letter') console.log(this.id) greenColor = this.id green(greenColor) right++ console.log(right) return } else if (this.id != hiddenChoice[k]) { console.log('guess again') console.log(guesses) console.log(this.id) redColor = this.id red(redColor) guesses-- } }El else no debería estar dentro del bucle, porque aún no puede saber si alguno de los siguientes caracteres coincidiría. Solo cuando el ciclo ha terminado, sabes que ninguna de las letras coincide.
Asi que:
function checkMatch(){ console.log(hiddenChoice) for (let k = 0; k < hiddenChoice.length; k++){ if (this.id === hiddenChoice[k]){ console.log('you found a letter') console.log(this.id) greenColor = this.id green(greenColor) right++ console.log(right) return } } console.log('guess again') console.log(guesses) console.log(this.id) redColor = this.id red(redColor) guesses-- }Algunas otras observaciones:
Su código usa varias variables que no están declaradas, o al menos globales. Esto debe evitarse. Declare variables temporales (como greenColor ?) como variables locales (por ejemplo, con let ).
Termina tus declaraciones con un punto y coma. JavaScript hace esto automáticamente cuando usted no lo hace, usando algunas reglas, pero no quiere que eso suceda ya que hay algunas trampas.
No está claro qué es this . Sería mejor si se pasara id como argumento a la función.
Su código no funcionará como se espera si una única suposición tiene múltiples coincidencias. Trate de pensar cómo podría manejar eso (como ejercicio).