13
respostas

Manipulando Array - aula final =(

Já estou horas aqui, fiz todo tipo de anotação, mas sinceramente, tá difícil digerir viu. Bate até um desânimo =( Melhor ir dormir e mais tarde tento novamente.

Voltei!

Alguém sabe me dizer se o Math.random()*10; sorteia um número aleatório entre 1-10 ou entre 0-10?

Até o momento da aula que o Flávio pega o incremento numero++ e joga pra dentro doif(achou==false){segredos.push(numeroAleatorio);} eu entendi.

Agora, quando ele diz que às vezes a função gera zero e zero ele não quer que seja um número válido e cria um if(numeroAleatorio!==0){} e joga o código dentro do bloco desse if, já não consigo entender.


<meta charset="UTF-8">
<input/>
<button>Compare com o meu segredo</button>
<script>
    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; //Por que aqui ele declarou esta variável antes do if(numeroAleatorio!==0){} e no vídeo da aula ele jogou a mesma variável, junto com o resto do código, pra dentro do bloco do if??
              if (numeroAleatorio !== 0) {
                     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(3);
    console.log(segredos);
    var input = document.querySelector("input");
    input.focus();
    function verifica() {
       var achou = false;
       for(var posicao = 0; posicao < segredos.length; posicao++) {
              if(input.value == segredos[posicao]) {
                     alert("Você ACERTOU!");
                     achou = true;
                     break;
              } 
       }
       if(achou == false) {
              alert("Você ERROU!");
       }
       input.value = "";
       input.focus();
    }
    var button = document.querySelector("button");
    button.onclick = verifica;
</script>
13 respostas

O que acontece Jorge e que a função em :

for(var posicao = 0; posicao < segredos.length; posicao++) { if(segredos[posicao] == numeroAleatorio){ achou = true; break; } } esta percorrendo o array e devolvendo os valores aleatórios gerados pelo sorteia() e que aparecem no console pra gente. Mas como essa função poderia entregar o 0, ele simplesmente colocou tudo dentro do if (numeroAleatorio !== 0) para impor a condição de que os números que o array retornariam seriam diferentes de zero.

Oi Jorge, É complicado mesmo de primeira, mas se você insistir vai ficando palatável e depois até fácil. Melhor coisa é fazer um break mesmo.

Te entendo, Jorge! Entendi a lógica mas quando rodo o código da erro dos números se repetirem.

Calma, meu amigo! No início é sempre assim.

Logo você pega o jeito.

Estarei a disposição para ajudar no que eu conseguir.

Sempre que desanimar lembre que pode contar com a comunidade, estamos aqui para te ajudar!

Obrigado a todos. Ainda tô em lógica 2. Falta Javascript, Git e Github e esse Challenge. Logo logo tá liberando trilha 2. Difícil.

Também achei difícil essa aula, não consegui entender muito bem a var = achou, quando ela é true ou false dentro da function.

É Stephanie! Quando conseguir finalizar a trilha, voltarei nesse exercício para tentar compreendê-lo melhor rs

Pensei nisso também! Tenho certeza que em algum momento vamos conseguir!

amigo tem um trecho do seu codigo que na condicional voce qui fazer a comparacao de diferente, mas vi que foi um "=" a mais. da uma verificada e ve se e isso mesmo.

if (numeroAleatorio !== 0) { //aqui seria um igual somente, certo?
                     for(var posicao = 0; posicao < segredos.length; posicao++) {
                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }
                     }

Nossa tbm tive a mesma sensação, não estava entendendo nada. acho melhor eu dar um break e voltar depois para revisar alguns assuntos.

Luis Vitor, também não entendi esse !== . Foi assim que o instrutor escreveu. Esse código é o código final do exercício que ele disponibilizou. Só copiei e colei aqui.

Concordo Luiz Antonio!!