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

[Duda] Por qué no funciona?

Hola, no entiendo por qué no funciona de esta forma. Sin usar la variable "encontrado". Luego de generar el nro aleatorio, uso un "for" para comparar ese nuevo nro generado con todos los nros ya existentes en el array (hasta secretos.length). Si ese nro es diferente a los que ya están, se agregará a la lista, caso contrario simplemente se restara el contador. El asunto es que me sale el array secretos=vacío. Entiendo que lo hacen de otra forma en el video, además usan while, pero necesito saber qué estaría fallando en este caso. Gracias!

function sortearNumeros(cantidad) {

        var secretos = []; 


                for (var contador = 1; contador <= cantidad; contador++) {

                    var nroAleatorio = aleatorios(); 


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


                        if (nroAleatorio != secretos[posicion]) {

                            secretos.push(nroAleatorio);
                        } 


                        else {

                            contador = (contador - 1);     
                        }



                    } 


                }

        return secretos; 

    }
1 respuesta

En todo momento tu variable secretos es un array vacío. Nunca se le asignan valores.

function sortearNumeros(cantidad) {
  // el arreglo esta vacío
  var secretos = [];

  for (var contador = 1; contador <= cantidad; contador++) {
    var nroAleatorio = aleatorios();

    // como secretos esta vacío, no se cumple la condición 
    // posicion < secretos.length ya que 0 < 0 es falso
    // por lo que se salta todo este for
    for (var posicion = 0; posicion < secretos.length; posicion++) {
      if (nroAleatorio != secretos[posicion]) {
        secretos.push(nroAleatorio);
      } else {
        contador = contador - 1;
      }
    }
  }

  // se retorna el arrelgo secretos, pero esta vacío
  return secretos;
}