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

Desafio Final

Olá pessoal, eu tentei desenvolver o código, até que foi... mas quando vi o código do instrutor me bagunçou a cabeça. O principal motivo foi a forma como ele comparou duas variáveis usando o "===" (3 sinais). Vi no google que é aceito também, mas não entrou na cabeça o que ele realmente faz.

Outra coisa é; gostaria de entender como esse código está se relacionando. Grato

var quantidadeAcertos = function(jogados, sorteados) {
    var acertos = 0;
    for(i = 0; i < 6; i++) {
        for(j = 0; j < 6; j++) {
            if(jogados[i] === sorteados[j]) {
                acertos++;
            }
        }
    }
    return acertos;
}

var acertos = quantidadeAcertos(numerosJogados, numerosSorteados);
2 respostas
solução!

Oi Bene-Hur,

Isso é um detalhe maluco, particular do Javascript. Imagine o seguinte código, onde tenho uma variável x igual a 5. E aí vou fazer algumas comparações com ela:

var x = 5

console.log(x == 5); // verdadeiro
console.log(x === 5); // verdadeiro

console.log(x == "5"); // verdadeiro
console.log(x === "5"); // falso

Ou seja, se você usa ==, mesmo que os tipos sejam diferentes, por exemplo o número 5 e a string "5", ele vai tentar converter um no outro pra ver se é igual. Por isso que "5" == 5 é verdadeiro.

Agora, se você usar o ===, ele não vai converter. Ou seja, "5" === 5, pois são de tipos diferentes.

Sobre o código, o que você não entendeu? O que acontece ali é que ele compara todos os números do primeiro array numerosJogados com os do segundo array numerosSorteados.

Olhe o meu código abaixo, com um pouco mais de log, e veja o que aparece no console, pra vc entender melhor:

var quantidadeAcertos = function(jogados, sorteados) {
    var acertos = 0;
    for(i = 0; i < 6; i++) {
        console.log("estou olhando o jogado " + jogados[i]);
        for(j = 0; j < 6; j++) {
            console.log("e comparando com " + sorteados[i]);
            if(jogados[i] === sorteados[j]) {
                console.log("otimo! eles sao iguais!");
                acertos++;
            }
        }
    }
    return acertos;
}

Entendeu?

Um abraço!

Perfeito! Entendi, bem explicado sobre os comparadores.

Testei o código aqui e pude entender, acho que eu estava saturado e não enxerguei o if dentro do segundo for, porque não entrava na minha cabeça fazer isso usando só com o for, hoje ao rever o código minha dúvida acabou na hora. Obrigado!