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

IF()

  if(item % 2) { // só entra no IF se o resultado for diferente de zero
        novosNumeros.push(item * 2);
    } else {
        novosNumeros.push(item);
    }

Ainda não entendi esse trecho, pois item % 2 vem o resto do 0(zero) e pq if retorna diferente do zero? Por exemplo:

if(2%2) = retorna true, pois vem o resto 0.
if(3%2) = retorna false, pois vem o resto 1.
3 respostas

Filipe,

Vamos usar um exemplo, certo?

No caso do número 3: 3 % 2 = 1 - Entra no if (Já que é impar, vai ser dobrado)

No caso do número 8: 8 % 2 = 0 - Não entra no if (Já que é par, não precisa dobrar)

Você entendeu a lógica de forma inversa: O que queremos é quando "item" for impar, ele entre no if (resultado 1), e quando for par, entre no else (resultado 0).

Ou seja:

if(2%2) = retorna false, pois vem o resto 0.
if(3%2) = retorna true, pois vem o resto 1.
solução!

Em JavaScript, 0, "", null, false e undefined são considerados false. Qualquer coisa diferente disso é true dentro de um if`. É uma regra que pode ajudar a deixar seu código enxuto.

Por exemplo:

 if(item % 2) {  zero
        novosNumeros.push(item * 2);
    } else {
        novosNumeros.push(item);
    }

Se o item é par, o resto da divisão é 0, certo? Isso porque % 2 quer saber o resto da divisão. Se for 0, é considerado false dentro do if, é por isso que o else é chamado.

Não pense que coloquei essa pegadinha só para pegar o aluno, é algo muito utilizado.

Consegui ajudá-lo a matar essa charada?

Flavio,

Entendi depois li esse trecho : Em JavaScript, 0, "", null, false e undefined são considerados false ai aproveitei o teste no console, segue abaixo:

if(0) { console.log('Eu sou Falso')} //Não apareceu no console
if(null){console.log('Eu sou Falso')} //Não apareceu no console
if(''){console.log('Eu sou Falso')} //Não apareceu no console
if(undefined){console.log('Eu sou Falso')} //Não apareceu no console
if(false){console.log('Eu sou Falso')} //Não apareceu no console
var outraCoisa = 2;
if(outraCoisa){console.log('Eu sou verdadeiro')}  //Finalmente apareceu no console

Obrigado Flavio e Brian Lira.

Abraço.