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

Geração de itens aleatórios no array

Eu resolvi fazer esse exercício antes de assistir a aula, quebrei bastante a cabeça e consegui fazer a geração de números aleatórios da seguinte forma. Qual seria a forma mais "profissional" para se utilizar na geração de itens aleatórios? claro considerando que o array já esteja com o número de itens definidos previamente, se não esse código que eu fiz não iria funcionar.

<meta charset="UTF-8">

<input/>
<button>Compare com o número que estou pensando!</button>

<script>

function embaralhar(){

var numeroAleatorio = Math.round(Math.random()*10);
return numeroAleatorio;

}

var segredos = [itemArray,itemArray,itemArray,itemArray];

for (var contador=0; contador < segredos.length ; contador++ ) {
    var itemArray = embaralhar();

    segredos[contador]=itemArray;

    }


var input = document.querySelector("input");
var achou = false

function verifica() {

    for(var contador=0; contador<segredos.length; contador++){
        if(input.value == segredos[contador]) {
        alert("Parabéns! Você acertou o número secreto");
        achou = true;
        break;

        }
    }

     if (achou == false){

             alert("VOCÊ ERROU");

    }

}  
    var button = document.querySelector("button");
    button.onclick = verifica;
</script>
3 respostas
solução!

Boa noite, Kalil! Como vai?

Essa não é a melhor forma de criar um array com números sorteados aleatoriamente. Para fundamentar essa minha afirmação basta imaginar uma situação onde fosse necessário um array com 100 elementos sorteados aleatoriamente. Ninguém iria querer escrever algo como:

var segredos = [itemArray, // e mais 99 outros itemArray];

Seria péssimo ter que escrever itemArray 100 vezes!

Por isso, o ideal é deixar o seu array inicialmente vazio e definir o tamanho dele com o laço de repetição dessa forma:

var segredos = [];
var tamanhoArray = 100;

for (var contador=0; contador < tamanhoArray; contador++ ) {
    var itemArray = embaralhar();

    segredos[contador]=itemArray;

}

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Oi Kalil com o tamanho do array predefinido, uma forma sucinta seria utilizar a variável de indíce do for e chamar a função direto, ficando assim :

var segredos = new Array(4);

for (var indice=0; indice < segredos.length; indice++ ) {
    segredos[indice] = embaralhar();
}

Observe que utilizo a propriedade .length para não me preocupar se o array vai mudar ou não de tamanho, atribuo o retorno da função direto para o array no indice vigente.

Espero ter ajudado e bons estudos.

Oi Kalil ainda resta alguma súvida ou já foi solucionada ?