Oi Rodolpho, tudo bem?
Desculpe a demora em retornar.
A lógica por trás da conta de sobra é simplesmente subtrair o índice atual do item (mês ou dia) por 0 ou 1, dependendo se o índice é par ou ímpar.
O método .map()
é usado para iterar sobre cada elemento do array retornado após a execução do método .split()
, que divide a string em substrings usando o separador informado (no caso, "-") e retorna um array com as substrings.
Dentro da função de callback do .map()
, a variável item
representa cada substring do array e indice
representa o índice correspondente a cada substring no array.
A expressão indice % 2
é usada para determinar se o índice é par ou ímpar. Se o índice for par, a expressão indice % 2
será igual a 0. Se o índice for ímpar, a expressão será igual a 1.
A conta de sobra item - indice % 2
é executada para subtrair o índice atual por 0 se o índice for par, ou por 1 se o índice for ímpar. Isso faz com que os meses sejam decrementados em 1 para cada índice ímpar (já que os meses são indexados em 0) e os dias sejam decrementados em 1 para cada índice par (pois o primeiro dia do mês é indexado em 1).
Dessa forma, os valores de mês e dia são ajustados para que possam ser usados corretamente na criação do objeto Date
.
Um abraço e bons estudos.