Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Javascript - Dúvida no entendimento de uma função

Olá estou com dúvida ao tentar interpretar a função sorteiaNumero, essa função foi usada no curso pra evitar a repetição na geração de números aleatórios, gerando apenas números diferentes dos demais.

function sorteia() {

        return Math.round(Math.random() * 10);
    }

    function sorteiaNumeros(quantidade) {

        var arrayfun = []; //array gerada na função.
        var numero = 1;

        while(numero <= quantidade) {

            var numeroAleatorio = sorteia();
            var achou = false;

            for(var posicao = 0; posicao < arrayfun.length; posicao++) {

                if(arrayfun[posicao] == numeroAleatorio) {  //MINHA DÚVIDA ESTÁ AQUI!!!

                    achou = true;
                    break;
                }
            }

            if(achou == false) {

                arrayfun.push(numeroAleatorio);  //OS ITEMS ACRESCENTADOS NO ARRAY SÓ SÃO ADICIONADOS AQUI, COMO ELES PODEM SER COMPARADOS ANTES?
                numero++;

            }

        }

        return arrayfun;
    }

Minha dúvida é como a variável "arrayfun" pode ser comparada com a variável "numeroAleatorio" sendo que so se é atibuído um valor para a ela após a comparação com a variável "numeroAleatorio" .

PS: a minha pergunta está bem formulada?

3 respostas
solução!

Bom dia João.

Como você viu, o array arrayfun começa vazio. Então, quando você vai adicionar o primeiro número, ele nem entra dentro do for porque o arrayFun.length é 0! Faz sentido, pois estamos adicionando o primeiro número.

Depois, na segunda passada, o novo número gerado será comparado com o elemento que acabou de ser adicionado e por ai vai.

Era essa a sua dúvida?

Não parei pra pensar que arrayfun.length era zero no inicio!!! Obrigado

Sucesso e bom estudo, meu aluno!