Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda función para evitar números repetidos

Estoy usando el mismo código que muestran en la clase, pero en mi caso la función "for" no evita que se repitan los números generados de forma aleatoria.

<meta charset="UTF-8">

<h1> Adivínanza</h1>

<input/>
<button>Verificar si acertó</button>

<script>
     function aleatorio () {
         return Math.round(Math.random()*10);
     }


     function sortearnumero (cantidad) {

         var secretos = [];
         var contador = 1;

         while(contador <= cantidad) {
            numeroaleatorio = aleatorio();
             console.log(numeroaleatorio)
             var encontrado = false;

             for (var posicion = 0; posicion < secretos.lenght; posicion++) {

                 if (numeroaleatorio == secretos[posicion]) { 
                     encontrado = true; 
                     break;
                 }

}


                if (encontrado == false) {

                 secretos.push(numeroaleatorio);
                 contador++;  
              }

         }

         return secretos

     }

    var secretos = sortearnumero(4);

    console.log(secretos)

    var input = document.querySelector("input");
    input.focus();

    function verificar() {

        var encontrado = false;

        for(var posicion = 0; posicion < secretos.length; posicion++){

            if (parseInt(input.value) == secretos[posicion]) { 

                alert("acertó");
                encontrado = true;
                break;
            }


         }

         if (encontrado == false)
         alert("error");


        input.value = "";
        input.focus();


    }

var button = document.querySelector("button");
button.onclick = verificar;

</script>
1 respuesta

Lo que te falta es esta linea de codigo sobre tu "for" debido a que esta simbologia "!=" corresponderia como "no es igual a" por tanto if(numeroAleatorio != 0 ){} // el numero aleatorio no puede ser igual a 0

if(numeroAleatorio != 0 ){}

la cual debe englobar esta parte del codigo

if(numeroAleatorio != 0 ){ for(var posicion = 0; posicion < secretos.length; posicion++ ){

                if(numeroAleatorio == secretos[posicion]) {
                    encontrado = true;    
                    break;
                }

            }