Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Por que o meu código não evita a repetição?

Olá pessoal, tudo bem?

Escrevi este código para a aula, e minha dúvida é com relação à repetição dos números no arrays.

Eu comparei o meu código com o da aula e a única diferença que encontrei foi que eu decidi mudar a variável "segredos" para "numerosSecretos", porém o meu não funciona de jeito nenhum. Para tirar a dúvida, dei um "localizar e substituir" no meu código, mudando "numerosSecretos" para "segredos" e ainda assim não funcionou. Se eu fizer o oposto com a resposta da aula e substituir a variável "segredos" pela minha versão, o código funciona.

Já li e já reli e não consigo encontrar nada que possa causar essa diferença. Alguém pode dar uma mão?

////// MEU CÓDIGO - COM ESTE HÁ REPETIÇÃO DE NÚMEROS NO ARRAY //////

function sorteia() {

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

}

function sorteiaNumeros(quantidade) {

    var numerosSecretos = [];

    var numero = 1;

    while(numero <= quantidade) {

        var numeroAleatorio = sorteia();
        var achou = false;

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

            if(numerosSecretos[posicao] == numeroAleatorio) {
                achou == true;
                break;
            }
        }

        if(achou == false) {
            numerosSecretos.push(numeroAleatorio);
            numero++;
        }


    }

    return numerosSecretos;
}

var numerosSecretos = sorteiaNumeros(5);

console.log(numerosSecretos);

////// CÓDIGO DA AULA - FUNCIONA E EVITA A REPETIÇÃO //////


function sorteia() {

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

}

function sorteiaNumeros(quantidade) {

    var segredos = [];

    var numero = 1;

    while (numero <= quantidade) {

        var numeroAleatorio = sorteia();
        var achou = false;

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

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

        }

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

    }

    return segredos;

}

var segredos = sorteiaNumeros(5);

console.log(segredos);
2 respostas
solução!

Fala Roger, tudo bem?

É um pequeno detalhe que você deixou passar na hora de reatribuir o valor da variável 'achou'.


achou == true;

// o correto seria assim
achou = true;

Dessa forma os números repetidos são adicionados no array.

Nossa, mesmo revisando várias vezes lado a lado, ainda consegui deixar essa passar!

Valeu, Thiago!