26 lines
869 B
JavaScript
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;
|
|
}
|