1
resposta

Resolução - Código completo com todas as implementações das aulas

function sortear(){
    let quantidade = parseInt(document.getElementById('quantidade').value);
    let de = parseInt(document.getElementById('de').value);
    let ate = parseInt(document.getElementById('ate').value);

    let sorteados = [];
    let numeroAleatorio;
    if(quantidade < ate){
    for (let i = 0; i < quantidade; i++){
        numeroAleatorio = gerarNumeroAleatorio(de, ate);

        while(sorteados.includes(numeroAleatorio)){
            numeroAleatorio = gerarNumeroAleatorio(de, ate);
        }

        sorteados.push(numeroAleatorio);

    let resultado = document.getElementById('resultado');
    resultado.innerHTML = `<label class="texto__paragrafo">Números sorteados: ${sorteados}</label>`
    alterarStatusBotao();

    }
    }else{
        if(quantidade = ate){
        alert("A quantidade não deve ser maior ou igual ao número máximo.")
    }else{
        alert("A quantidade não deve ser maior ou igual ao número máximo.")
    }
    }
}

function gerarNumeroAleatorio(min, max){
    return Math.floor(Math.random()*(max - min) + min);
}

function alterarStatusBotao(){
    let reiniciar = document.getElementById('btn-reiniciar');
    if(reiniciar.classList.contains('container__botao-desabilitado')){
        reiniciar.classList.remove('container__botao-desabilitado');
        reiniciar.classList.add('container__botao');
    }else{
        reiniciar.classList.remove('container__botao');
        reiniciar.classList.add('container__botao-desabilitado');
    }
}

function reiniciar(){
    document.getElementById('quantidade').value = '';
    document.getElementById('de').value = '';
    document.getElementById('ate').value = '';
    document.getElementById('resultado').innerHTML = '<label class="texto__paragrafo">Números sorteados:  nenhum até agora</label>';
    alterarStatusBotao();
}
1 resposta

Oi! Tudo bom?

Excelente! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Você soube aplicar funções auxiliares de forma eficiente, aproveitou o laço while com .includes() para evitar repetições e entendeu como o controle de validação dos inputs é essencial para manter a lógica consistente.

Como dica adicional, experimente utilizar o Set quando precisar garantir unicidade de forma mais performática. Assim:

let sorteados = new Set();
while (sorteados.size < quantidade) {
    const numero = gerarNumeroAleatorio(de, ate);
    sorteados.add(numero);
}
resultado.innerHTML = `<label class="texto__paragrafo">Números sorteados: ${[...sorteados]}</label>`;

Com isso, você poderá evitar duplicações de forma mais direta/eficiente e também garante números únicos sem usar .includes(), com melhor performance.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!