salix-front/src/filters/getDifferences.js

26 lines
869 B
JavaScript

export default function getDifferences(initialData = {}, formData = {}) {
const diff = {};
delete initialData?.$index;
delete formData?.$index;
// Añadimos los valores que están en initialData
for (const key in initialData) {
if (!Object.prototype.hasOwnProperty.call(formData, key)) {
// Caso 1: initialData tiene una clave que no tiene formData
diff[key] = initialData[key];
} else if (JSON.stringify(initialData[key]) !== JSON.stringify(formData[key])) {
// Caso 2 y 3: valores diferentes o null en formData
diff[key] = formData[key];
}
}
// Añadimos las claves nuevas de formData
for (const key in formData) {
if (!Object.prototype.hasOwnProperty.call(initialData, key)) {
diff[key] = formData[key];
}
}
return diff;
}