Differences Between Two Objects
Medium
Solution
/* eslint-disable @typescript-eslint/no-explicit-any */
export function objDiff(obj1: any, obj2: any): any {
const isObject = (obj: any) => typeof obj === 'object' && obj !== null;
if (obj1 === obj2) {
return {};
}
if (!isObject(obj1) || !isObject(obj2)) {
return [obj1, obj2];
}
if (Array.isArray(obj1) !== Array.isArray(obj2)) {
return [obj1, obj2];
}
const diff: any = {};
for (const key in obj1) {
if (key in obj2) {
const nestedDiff = objDiff(obj1[key], obj2[key]);
if (0 < Object.keys(nestedDiff).length) {
diff[key] = nestedDiff;
}
}
}
return diff;
}