Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvidas com = e ==

Durante a aula de Manipulando Array fui programando junto com o instrutor conforme ia entendendo a lógica usada por ele. Acontece que, ao final da aula, fui testar o código para ver se estava funcionando certinho, percebi que apareciam números repetidos, fui buscar o erro no meu código e, visualmente, parecia tudo normal. Fui comparar meu código detalhadamente com o código do instrutor, e, percebi que ao invés de colocar achou = true; eu coloquei achou == true;

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

Ainda não compreendi direito quando devo usar o =** ou **==, mas sei que o =** significa que estou atribuindo e o **== significa igualdade em si. Alguém pode me explicar isso detalhadamente? A lógica que eu uso por trás disso e etc. Vou deixar o código completo:

<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 numeros = 1;

        while ( numeros <= quantidade ) {

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

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

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

                if (achou == false) {

                    segredos.push(numeroAleatorio);
                    numeros++
                }    

            }
        }

        return segredos;
    }

    //5,7,10,2,3
    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>
1 resposta
solução!

O operador =** serve para atribuir um valor, enquanto **== e === servem para verificar valores.

Por exemplo:

var numero = 10; // Aqui eu atribui o número 10 a variável "numero"

console.log(numero) // 10
    var numero = 10 // Criei uma variavel chamada numero e atribui o numero 10
    var textoDeNumero = "10" // Criei uma variavel chamada textoDeNumero e atribui uma string com o texto "10"

    console.log(numero == textoDeNumero) // true, a resposta será true pois 10 = 10, independente do tipo de dado
    console.log(numero === textoDeNumero // false, a resposta será false pois o número 10 não é a mesma coisa que a string "10"

Recomendo dar uma olhada nesse artigo da instrutora Rafaela Ballerini, lá tem mais explicado como funciona cada operador matemático, inclusive a diferença entre == e ===

https://www.alura.com.br/artigos/operadores-matematicos-em-javascript