1
resposta

[Dúvida] Utilizando o array.length para resolver "Mão na massa: proteção no total de números sorteados"

Preciso de uma opinião e ajudinha! Meu código está da seguinte forma:

    if(quantidade>sorteados.length){
        alert('Campo "Quantidade" maior que o intervalo determinado');
    }

O exercício pode ser resolvido desta forma? Se não, por qual motivo?

1 resposta

Oi, Carolina. Tudo bem?

Você está bem próxima da solução, mas parece que aplicou uma lógica inversa. No começo do for loop o Array sorteados ainda não possui elementos, logo o seu length é igual a zero. Já a quantidade é iniciada com um valor positivo (eu espero rs). Então, a sua condição, quantidade > sorteados.length, deve ser sempre verdadeira.

O ideal seria:

  1. Definir a condição que causa um loop infinito;
  2. Impedir que o código execute o while loop quando essa condição for verdadeira; e
  3. Alertar o usuário para corrigir os números inseridos.
// ...
if (condição que causa loop infinito) {
        alert("A quantidade de números sorteados precisa ser inferior a (algum intervalo)");
        return "Escolha outro intervalo";
}

for (let i = 0; i < quantidade; i++) {
    numero = obterNumeroAleatorio(de, ate);

    while (sorteados.includes(numero)) {
      numero = obterNumeroAleatorio(de, ate);
     }

    sorteados.push(numero);
  } 
//...

Happy coding!