Olá, Pedro!
Vamos dar uma olhada no seu código e ver como podemos melhorá-lo. Pelo que você escreveu, parece que você está tentando implementar uma proteção para evitar um loop infinito quando a quantidade de números a serem sorteados é maior do que o intervalo disponível. No entanto, há alguns problemas na estrutura do seu código. Aqui está uma versão revisada com algumas correções e simplificações:
if (de >= ate) {
alert('Reveja o número inserido');
return;
}
if (ate - de + 1 < quantidade) {
alert('Números além do limite');
return;
}
Vamos analisar as mudanças:
Estrutura do if
: Você tinha um if
aninhado dentro de outro if
, o que não é necessário. Além disso, havia um erro de sintaxe com o ponto e vírgula (;
) dentro da condição else if
.
Verificação do intervalo: A segunda condição verifica se o intervalo de números é menor do que a quantidade de números a serem sorteados. Se for, exibe um alerta e interrompe a execução.
Remoção de duplicatas: Não é necessário repetir o mesmo bloco de código. Uma única verificação é suficiente.
Aqui está um exemplo prático de como você pode usar esse código em um contexto maior:
function sortearNumeros(de, ate, quantidade) {
if (de >= ate) {
alert('Reveja o número inserido');
return;
}
if (ate - de + 1 < quantidade) {
alert('Números além do limite');
return;
}
let sorteados = [];
for (let i = 0; i < quantidade; i++) {
let numero;
do {
numero = obterNumeroAleatorio(de, ate);
} while (sorteados.includes(numero));
sorteados.push(numero);
}
return sorteados;
}
Neste exemplo, a função sortearNumeros
faz a verificação inicial para garantir que os parâmetros são válidos antes de tentar sortear os números. Se as verificações falharem, a função exibe um alerta e retorna sem fazer nada.
Espero ter ajudado e bons estudos!