Buenas noches, Tengo una consulta sobre el código en el Juego Secreto 3 realizado en clase por el profesor. Mi duda es en la parte del for donde hace la comparación para que no hayan números repetidos en el array.
while(contador <= cantidad) {
            numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;
            if(numeroAleatorio !== 0) {
                for(var i = 0; i < secretosUno.length; i++) {
                    if(numeroAleatorio === secretosUno[i]) {
                        encontrado = true;
                    }
                }
                if(encontrado === false) {
                    secretosUno.push(numeroAleatorio);
                    contador++;
                }
            }    
        }
        return secretosUno;Cuándo dice if(numeroAleatorio === secretosUno[i]), el valor de secretosUno en el indice 0 (ya que i primero vale cero) va ser undefined porqué no hay ningún valor en esa posición. En la segunda iteración o recorrido, es decir, cuando i vale 1, el valor también sería undefined porqué no habría ningún valor en esa posición. El array solo tendría un valor que vendría a ser la posición de i cuando vale 0, y así sucesivamente por lo que la comparación para ver si no hay números repetidos estaría mal. Veamos un ejemplo del recorrido del for con valores supuestos:
// primera vuelta i = 0
    numeroAleatorio = 3;
    secretosUno[0] = undefined; // porqué no hay ningun elemento
    numeroAleatorio == secretosUno[0] // el resultado aquí seria false
    secretosUno = [3] // solo tiene un elemento qué  seria igual decir secretosUno[0] = 3;
    // segunda vuelta i =1
    numeroAleatorio = 5;
    secretosUno[1] = undefined; // porque en esa posición no hay ningún elemento
    numeroAleatorio == secretosUno[1] // el resultado aquí seria false
    secretosUno = [3, 5] // ahora el array tiene dos elementos, y sería igual decir secretosUno[0] = 0 y secretosUno[1] = 5
    // tercera vuelta i = 2
    numeroAleatorio = 6;
    secretosUno[2] = undefined; //porque en esa posición no hay ningún elemento
    numeroAleatorio == secretosUno[2] // el resultado aquí seria false
    secretosUno = [3, 5, 6] // ahora el array tiene tres elementos, y sería igual decir secretosUno[0] = 0; secretosUno[1] = 5 y secretosUno[2] = 6
    // cuarta vuelta i = 3
    numeroAleatorio = 3; // como es aleatorio puede ser cualquier número, incluso uno igual a los anteriores.
    secretosUno[3] = undefined; //porque en esa posición no hay ningún elemento
    numeroAleatorio == secretosUno[3] // el resultado aquí seria false
    secretosUno = [3, 5, 6, 3] // ahora el array tiene 4 elementos, y sería igual decir secretosUno[0] = 0; secretosUno[1] = 5; secretosUno[2] = 6 y secretosUno[3] = 3
Según la lógica que había entendido del recorrido del array, esa comparación para ver que no hayan repetidos estaría mal pero el programa si lo resuelve muy bien y arroja un array sin repetidos. Alguien me podría explicar como funciona el recorrido del array en ese caso? Derrepente me estoy confundiendo y enredándome yo solo. Gracias.
 
            