Files
threetwo/src/client/shared/utils/object.utils.ts

23 lines
621 B
TypeScript

import { transform, isEqual, isObject } from "lodash";
/**
* Deep diff between two object, using lodash
* @param {Object} object Object compared
* @param {Object} base Object to compare with
* @return {Object} Return a new object who represent the diff
*/
export const difference = (object, base) => {
return changes(object, base);
};
const changes = (object, base) => {
return transform(object, (result, value, key) => {
if (!isEqual(value, base[key])) {
result[key] =
isObject(value) && isObject(base[key])
? changes(value, base[key])
: value;
}
});
};