Oi, Ismael! Tudo bem?
A diferença entre usar um while ou um if em nosso código se dá principalmente na quantidade de vezes que a verificação será feita. No exemplo fornecido, estamos usando um if para verificar se o número sorteado já existe no array sorteados, se existir, sorteamos um novo número. No entanto, esse novo número sorteado não é verificado novamente. Ou seja, se o novo número também já existir no array, ele será inserido mesmo assim, porque o if só verifica uma vez.
Agora, se usassemos um while ao invés do if, a verificação seria feita repetidamente até que a condição não seja mais satisfeita. Ou seja, o while continuaria sorteando e verificando novos números até que um número que não exista no array seja sorteado.
Aqui está um exemplo de como ficaria o nosso código com o while:
for (let i = 0; i < quantidade; i++){
numero = obterNumeroAleatorio(de, ate);
while(sorteados.includes(numero)){
numero = obterNumeroAleatorio(de, ate);
}
sorteados.push(numero);
}
Nesse caso, o while garantiria que nenhum número repetido fosse inserido no array sorteados.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓