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

Dúvida

<input>
<button>Adivinhe meu segredo</button>

<script>

    var segredos = [5, 7, 10, 2];




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

    var button = document.querySelector("button");

    function verifica()  {

        for (var posicao = 0; posicao < segredos.length; posicao++)
        if(input.value == segredos[posicao]) {
            alert("você acertou")
                break;





        }    
    if (input.value != segredos){

alert("você errou");


        }


            input.value= ""; 





    }

    button.onclick = verifica; 

    </script>

Observe que para a variação funcionar tive que acrescentar algumas coisas.

for (var posicao = 0; posicao < segredos.length; posicao++)
        if(input.value == segredos[posicao]) {
            alert("você acertou")
                break;

Porém para fazer com que o alert "você errou" tive somente que por

if (input.value != segredos){

alert("você errou");


        }

Seguindo está mesma lógica, o inicio poderia dar certo deste jeito.

var segredos = [5, 7, 10, 2];


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

    var button = document.querySelector("button");

    function verifica()  {
        if(input.value == segredos) {
            alert("você acertou")

Porque isso não é possível?

6 respostas
solução!

Oi Clara, tudo bem?

A gente não pode fazer isso porque os tipos são diferentes.

input.value é o valor pego do input enquanto segredos é um array, repara que são tipos incopativeis ?

O que você poderia fazer é usar o método¹ find do array. Ex:

if(segredos.find(input.value)){
    alert('você sabe meu segredo')
}else{
    alert('você não sabe meu segredo')
}

Acho que isso resolveria seu problema e deixaria seu código mais simples.

Obrigada Matheus. E Davi, você poderia me explicar um pouco mais sobre esse .find ?

Vai fazer sentido, eu prometo. Pense em um cachorro, pensou? Esse cachorro é de que raça? Qual a color do pelo dele? Ele pode comer, correr, dormir etc.

Mas qual a relação de um cachorro com o array? simples no nosso mundo existe um tipo de programação, chamada de: programação orientada a objetos (POO), mas o que seria isso? Em resumo temos a objetificação do mundo real na programação, todo objetos tem duas peculiaridades importantes, 1 tem seus atributos e 2 os seus métodos . No exemplo do cachorro temos como atributos: raça, cor do pelo, e como métodos: comer,correr e dormir.

Do mesmo jeito temos para o array, ele é um objeto que tem seus atributos e seus metodos, um deles é o find().

Espero que não tenho ficado muito confuso, sou novo nessa onde de ajudar pessoas em fórum.

Compreendi toda a analogia, .find é um método do array.

Mas o que ele faz? Para que serve?

Um site muito bom para entender html, css e javascript é o https://www.w3schools.com/.

Para entender o que é um Array: https://www.w3schools.com/js/js_arrays.asp

Para entender o que é o 'Array.find()' e fazer testes, segue o link: https://www.w3schools.com/jsref/jsref_find.asp

Um outro ambiente legal de se fazer testes é o jsfiddle (https://jsfiddle.net/). Nele você pode escrever html, css e javascript e verificar os resultados. Além disso ele é muito usado em sites como o stackoverflow (https://stackoverflow.com/) como uma alternativa de se mostrar para quem fez a pergunta, como ele resolveu e como ficaria.