0
respostas

Variação do tamanho do Array

Olá pessoal, eu havia achando um probleminha no meu código e optando por fazer algumas alterações até funcionar. Bom na aula "Manipulando Array" o professor fez uso da estrutura While e também do For. Pois bem até aí tranquilo, eu pra variar um pouco resolvi fazer os dois laços de repetição com o for, mas olhem só que curioso (pelo menos pra mim)

function criarArrayNumeros(tamanho) {
      let segredos = [];

      for (let i = 0; i < tamanho; i++) {
        let numeroAleatorio = sorteia();

        if (numeroAleatorio !== 0) {
          let achou = false;

          for (let i = 0; i < segredos.length; i++) {

            if (segredos[i] === numeroAleatorio) {
              achou = true;
              break
            }
          }

          if (achou === false) {
            segredos.push(numeroAleatorio);
          }
        }
      }

      return segredos;
    }

Parece normal certo? Porém ao gerar o array seu tamanho variava independente da quantidade que eu passava como parâmetro da função, se eu colocava 2, em um momento me retornava um array com 1 posição, a medida em que eu ia atualizando a página o tamanho do array ficava variando entre 2 e 1.

A solução qu eu tive foi basear no código com o while e resolvi dessa forma.

    function criarArrayNumeros(tamanho) {
      let segredos = [];

      for (let i = 0; i < tamanho;) {
        let numeroAleatorio = sorteia();

        if (numeroAleatorio !== 0) {
          let achou = false;

          for (let i = 0; i < segredos.length; i++) {

            if (segredos[i] === numeroAleatorio) {
              achou = true;
              break
            }
          }

          if (achou === false) {
            segredos.push(numeroAleatorio);
            i++
          }
        }
      }

      return segredos;
    }

Como podem ver eu omiti a expressão final que seria i++

     for (let i = 0; i < tamanho;) {}

e o adicionei no final, no bloco

    if (achou === false) {
            segredos.push(numeroAleatorio);
            i++
          }

Fazendo isso funcionou normalmente, só que fiquei com uma pulga atrás da orelha, será essa a solução com o for? Ou eu deixei passar alguma coisa? Desde já agradeço a atenção de vocês ao código e a dúvida em sí. Bons estudos a todos e Lets Code