1
resposta

[Dúvida] Exercício manipulando arrays

Meus caros, tenho uma dúvida quanto ao exercício praticado no vídeo manipulando arrays. Especificamente no parâmetro limitador da function "sorteiaNumeros(quantidade)".

Declaramos um array vazio de nome "segredos" dentro daquela função.

Ao percorrer as posições do array com uma função "for", utilizamos no parâmetro limitador o tamanho do array segredos (segredos.length). Todavia, esse array estava vazio, sem uma limitações de posições, como teria um tamanho de modo a preencher o valor de "segredos.length".

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++) //percorre o array
                {
                    if(segredos[posicao] == numeroAleatorio) 
                    {
                        achou = true;
                        break;
                    }
                }

                if(achou == false)
                {
                        segredos.push(numeroAleatorio);
                        numero++;
                }        
            }
        }    
        return segredos;
1 resposta

Olá Edson. Uma das maneiras de você contornar isto seria criar um IF ANTES do FOR, verificando se a array esta vazia (ou seja, se é a primeira vez que está rodando o while) , assim:

if(numeroAleatorio != 0) { //DEPOIS DESTE IF CRIAR O PROXIMO

if (segredos.length == 0){ //se segredos ainda não tem nenhum item, coloca o primeiro item na array, e vai para o proximo loop do while
    segredos.push(numeroAleatorio);
    numero++;

}else{ //E COLOCAR O FOR DENTRO DESTE ELSE (CASO segredos.length não seja 0 ) 

    for(var posicao = 0; posicao < segredos.length; posicao++) {  
          (..........)
    }
    (...)
} //fim do else, e do if que criamos! - AINDA DENTRO DO WHILE LOOP

acredito que isso deve resolver! Ficou claro??