Achei mais sucinto e fácil de entender trabalhar com while e if desta maneira:
while(sorteados.length < quantidadeNumeros) {
numero = gerarNumeroAleatorio(numeroInicial, numeroFinal)
if(!sorteados.includes(numero)) {
sorteados.push(numero)
}
}
Leio desta forma: ENQUANTO o tamanho do array sorteados for menor que a quantidade de números, gere um numero aleatório, SE o número sorteado NÃO estiver incluído no array Empurre-o para o array sorteados.
no lugar de:
for(let i = 0; i < quantidadeNumeros; i++){
numero = gerarNumeroAleatorio(numeroInicial, numeroFinal)
while(sorteados.includes(numero) {
numero = gerarNumeroAleatorio(numeroInicial, numeroFinal)
}
sorteados.push(numero)
}
Existem vários caminhos para chegar ao mesmo resultado e acho que o aprendizado passa por tentar de diversas formas.