1
resposta

Galera qual parte do meu codigo ta errado , ele esta gerando 0 ainda e esta gerando numero repetido tbm

function sorteio() {

    return Math.round(Math.random() * 10);
}


function numerosAleatorios(qtD) {
    var arrayDeNumeros = [];


    var contador = 1;

    while (contador <= qtD) {
        var sorteioDosNumeros = sorteio();
        var achou = false;


        if (sorteioDosNumeros !== 0) {

            for (var posicao = 0; posicao < arrayDeNumeros.length; posicao++) {

                if (arrayDeNumeros[posicao] == sorteioDosNumeros) {
                    achou = true;
                    break;
                }
            }
        }
        if (achou == false) {
            arrayDeNumeros.push(sorteioDosNumeros);
            contador++
        }
    }
    return arrayDeNumeros;
}

var arrayDeNumeros = numerosAleatorios(5);
console.log(arrayDeNumeros);
1 resposta

Bom dia meu xará

Eu creio que tenha encontrado o que está causando esse comportamento: o bloco de código do if (achou == false) deveria estar dentro das chaves do bloco if (sorteioDosNumeros !== 0). É uma situação difícil de notar mesmo mas você pode habilitar no seu editor de texto uma "dica" que sempre te mostra onde as chaves foram abertas e onde elas fecham, alguns te deixam até colorir diferente cada par. Recomendo fazer uma busca sobre.

Qualquer coisa estou colando aqui a parte que você precisa substituir:

if (sorteioDosNumeros !== 0) {

            for (var posicao = 0; posicao < arrayDeNumeros.length; posicao++) {

                if (arrayDeNumeros[posicao] == sorteioDosNumeros) {
                    achou = true;
                    break;
                }
            }
              if (achou == false) {
                  arrayDeNumeros.push(sorteioDosNumeros);
                  contador++
              }
        }

Qualquer coisa é só retornar aqui. Abraço e bons estudos!