Necesito disminuir var "izquierda" en 1 y solo una vez en lugar de hacer que pase por un ciclo y disminuir si las condiciones se cumplen. Pero las condiciones son válidas solo si están en un bucle. ¿Cómo haría esto?
let key = e.key.toLowerCase() for (i = 0; i < word.length; i++) { if (word[i] == key) { if (guessed[i] != key) { console.log(e.key) guessed[i] = key } else { console.log('This is where i want left--') } } } left--; //Need this to decrement only onceAlmacene si left se ha decrementado en una variable:
let key = e.key.toLowerCase() let decrementedLeft = false; for (i = 0; i < word.length; i++) { if (word[i] == key) { if (guessed[i] != key) { console.log(e.key) guessed[i] = key } else { if(!decrementedLeft){ decrementedLeft = true; left--; } } } } if(!decrementedLeft){ left--; }Puedes usar este método:
key = e.key.toLowerCase() Let decrement=false; for (i = 0; i < word.length; i++) { if(decrement==false) if (word[i] == key) { if (guessed[i] != key) { console.log(e.key) guessed[i] = key } else { left--; decrement=true;} } }O simplemente puede salir del bucle usando break
Debido a más condiciones así lo decidí. ¡Gracias por sus respuestas! Como estándar, tuve algunos problemas adicionales. Como primero if{}else{} en el bucle está ejecutando tanto if como else en lugar de uno u otro... Tan confuso.
let correct = 0; let key = e.key.toLowerCase() for (i = 0; i < word.length; i++) { if (word[i] == key) { if (guessed[i] != key) { guessed[i] = key correct = 1; console.log(e.key) } else { console.log('Guessing same key') correct = 1; } } } if (correct != 1) { left--; console.log('Decrementing') tries.innerHTML += `<span>${key} </span>` correct = 0 }