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

Uso de "map"

No código:


// aluraframe/client/js/app/helpers/DateHelper.js

class DateHelper {

    // código anterior omitido

    static textoParaData(texto) {

        // mudamos a validação para aceitar o novo formato!
        if(!/\d{2}\/\d{2}\/\d{4}/.test(texto)) 
            throw new Error('Deve estar no formato dd/mm/aaaa');

        // veja que usamos no split '/' no lugar de '-'. Usamos `reverse` também para ficar ano/mes/dia.      
        return new Date(...texto.split('/').reverse().map((item, indice) => item - indice % 2));
    }
}

Não entendi essa linha:

return new Date(...texto.split('/').reverse().map((item, indice) => item - indice % 2));

O que esse "map" faz?

Ele usa o item e o índice do atual elemento do array, certo?

Mas o que "(item, indice) => item - indice % 2)" faz?

Por que do uso do módulo?

2 respostas

O map pega cada item de um array, realiza uma ação individualmente, e o transforma em um novo array. Por exemplo:

const lista = [1, 2, 3]
const multiplicando = lista.map(valor => valor*2)//PEGA CADA ITEM DO ARRAY LISTA E MULTIPLICA POR DOIS 
console.log(multiplicando)//FICA:  [2, 4, 6]

E sobre sua outra pergunta. É um calculo para saber se um número é impar ou par. Se ele for divisível por dois, terá um resto 0, logo, será par. E sobre o ímpar, é só fazer a lógica inversa.

Dê uma lida nesse artigo depois, vai te ajudar ainda mais: https://odesenvolvedor.com.br/como-descobrir-se-um-numero-e-par-ou-impar-no-javascript_1301.html

Espero ter ajudado, abraços!

solução!

Boa noite, Marcelo! Como vai?

O map() sempre itera por um array aplicando uma transformação em seus itens e retornando, ao final, um novo array com os itens transformados. Exatamente como nosso colega mbthales exemplificou!

Nesse caso específico, o map() irá iterar pelos itens que formam uma data ( ano, mês e dia, nessa ordem exata ). Esses valores serão atribuídos ao parâmetro item em cada uma das iterações, enquanto o parâmetro indice receberá o índice do elemento atual que está sendo processado no array ( nesse caso, 0 para o ano, 1 para o mês e 2 para o dia ).

Por fim, o - indice % 2 foi um pulo do gato usado pelo mestre Flávio para subtrair de uma unidade quando o índice for ímpar ( o que ocorre apenas no índice do mês que é 1 ). Isso é feito pois, como visto anteriormente durante o curso, o mês é contado de 0 a 11 e o valor do mês recebido pelo map() sempre estará no formato de 1 a 12, nos obrigando assim a fazer a tal subtração.

Esse processo todo de manipulação da data é iniciado nessa aula e finalizado aqui! Veja essas aulas e as que estão entre essas duas que vc deve entender o contexto de forma completa!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!