3
respostas

segredos.length dentro da função sorteiaNumeros

Nesse trecho, ainda não haviam sido definidos quantos elementos teriam dentro do array "segredos[]", por isso não entendi como foi possível usar o "segredos.length" dentro do "for". Isso me fez travar na hora de praticar o exercício sozinho. Alguém ajuda a elucidar?

function sorteiaNumeros(quantidade) {
    var segredos = [];
    var numero = 1;
    while(numero <= quantidade) {
        var numeroAleatorio = sorteia();
        var achou = false;
        if (numeroAleatorio !== 0) {
            for(var posicao = 0; posicao < segredos.length; /posicao++) {
                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break;
                }
            }
                if (achou == false) {
                    segredos.push(numeroAleatorio);
                    numero++;
                }
        }
    }
    return segredos;
}
3 respostas

Bom dia Alan, tudo bem? Espero que sim!

Quando o array segredos estiver vazio, significa que length será igual a 0.

Portanto o for não irá rodar nessa primeira vez, uma vez que a posicao inicia-se em 0 e o for roda enquanto posicao < segredos.length (segredos < 0).

Segredos não será menor que 0, então o for não terá nenhuma iteração.

Quando houver o segredos.push, será adicionado um elemento ao array segredos. Na próxima iteração do while o for conseguirá rodar uma vez que o segredos.length terá valor maior que 0.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Tive a mesma dúvida, mas agora com essa explicação eu entendi. O que confundiu um pouco para mim a lição foi a array dentro da função ter o mesmo nome da variável criada fora da função, "segredos".

Concordo com o Bruno Bacelar. Tem que usar nomes diferentes para ajudar no entendimento. Tive a mesma dúvida do Alan. Será que não daria para fazer a mesma coisa de uma forma mais clara?