Saudações.
Ao revisar o código no final do curso para sedimentar o conhecimento surgiu uma nova dúvida que não havia aparecido na hora. Abaixo tem o código do arquivo "criaData.js" e eu gostaria que a atenção se voltasse para o uso do moment em dois objetos diferentes, o objeto "data" que é um parâmetro da função e do objeto do local storage dentro do forEach.
import { Tarefa } from "./criaTarefa.js";
export const criaData = (data) => {
const dataTopo = document.createElement("li");
// eslint-disable-next-line no-undef
const dataMoment = moment(data, "DD/MM/YYYY");
dataTopo.innerHTML = `<p class ="content-data">${dataMoment.format("DD/MM/YYYY")}</p>`;
const tarefas = JSON.parse(localStorage.getItem("tarefas")) || [];
tarefas.forEach((element, id) => {
// eslint-disable-next-line no-undef
const dia = moment(element.dataFormatada, "DD/MM/YYYY");
console.log(element, element.dataFormatada);
const diff = dataMoment.diff(dia);
if (diff == 0) {
dataTopo.appendChild(Tarefa(element, id));
}
});
return dataTopo
}
data é um objeto passado pela função do arquivo "carregaTarefa.js" o qual está com o seguinte código:
import { ordenaDatas, removeDatasRepetidas } from "../services/data.js";
import { criaData } from "./criaData.js";
export const carregaTarefa = () => {
const lista = document.querySelector("[data-list]");
lista.innerHTML = " "
const tarefas = JSON.parse(localStorage.getItem("tarefas")) || [];
const datasUnicas = removeDatasRepetidas(tarefas);
ordenaDatas(datasUnicas);
datasUnicas.forEach((element) => {
// eslint-disable-next-line no-undef
lista.appendChild(criaData(element));
});
}
Sendo assim, tanto o objeto "data" quanto o objeto "element" que entram como parâmetro da função "moment" tem suas datas extraídas mas de modo diferente, de maneira em que se aplicar a mesma lógica de data para o element não funciona, como assim? Eu explico!
Primeiro, importa entender que o objeto data é um dos elementos do array do localStorage, ou seja, possui todos os elementos de dataFormatada, horário, etc. o código do moment é aplicado pura e simplesmente nele e sua data é extraída. Segundo, o objeto element do documento criaData, assim como o objeto data, é composto por todos os seus elementos; no entanto para que o moment funcione, foi necessário fornecer apenas um elemento do objeto, explicitar através de "element.dataFormatada".
Se são dois objetos idênticos, porque o moment funcionou de forma diferente para cada um?
Tentei ser o mais claro possível