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

[Duda] Duda entendiendo la lectura del código

En la última sección del curso de conceptos primordiales, entramos con el tema de los arrays. En el juego de adivinación con arrays tengo una duda para entender cierta parte del código.

function sortearNumeros(cantidad) {

        var secretos = [];
        var contador = 1;
        while (contador <= cantidad) {

            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;

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

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

                if (encontrado == false) {
                    secretos.push(numeroAleatorio);
                    contador++
                }
            }
        }


        return secretos
    }

Sé para qué sirve el código, porque lo van explicando paso por paso en el video. Pero al leerlo (sin el video), no termino de comprender todas las partes. Me pierdo en el primer "if" luego del "while". Si alguien me lo pudiera explicar de otra manera o que haya alguna manera de entenderlo mejor...

1 respuesta

Hola compañero, viendo el código y desglosándolo. Lo interpreto de esta manera:

function sortearNumeros(cantidad) {

        // Declaramos las variables 

        var secretos = [];
        var contador = 1;

        // iniciamos el bucle, donde la cantidad sera ingresada y será el tope de cuantos números ingresaran.

        while (contador <= cantidad) {

        // en esta parte le asignamos los números aleatorios generados por la función.

            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;

En el caso del primer if, buscamos que todo número aleatorio que sea diferente de 0 inicie el bucle for. Con el bucle for buscamos que no se repitan los números, ya que si vemos que el número aleatorio es igual a algún número dentro del array secretos, por eso recorremos el array con el for. Si en caso es igual el número aleatorio con algún número dentro del array secretos, con el break saltamos a que el while inicie denuevo para que se añada otro número aleatorio que no se repita. En el caso del tercer if, simplemente se añade el valor del número aleatorio porque cumplio con la condición de no repetirse.

            // iniciamos el if.
            if (numeroAleatorio != 0) {

                //Recorremos el array secretos, secretos.length nos indica cuantos elementos tiene y nos indica cuantas veces recorreremos el bucle.

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

                    // En esta parte si validamos que ningun número se repita, ya que si detecta que el número aleatorio sea igual a alguno que exista, 
                    // no continue.

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

                // con este if despues de ver que ningún número se repita, se añade al array, el número aleatorio, y 
                //finalmente se aumenta el contador para que  continúe el bucle while y no sea un bucle infinito.

                if (encontrado == false) {
                    secretos.push(numeroAleatorio);
                    contador++
                }
            }
        }

// finalmente  retornamos todo el array.
        return secretos
    }

Es la manera en la que lo interprete compañero espero que sea de ayuda mi manera de explicarlo. Saludos.