Object Difference Finder
by Emily Humphrey
JavaScript
function differenceFinder(objA, objB) {
const changes = {};
for (const key in objB) {
if (Object.prototype.hasOwnProperty.call(objB, key)) {
if (Array.isArray(objB[key]) && Array.isArray(objA[key])) {
// Compare arrays
if (JSON.stringify(objA[key]) !== JSON.stringify(objB[key])) {
changes[key] = objB[key];
}
} else if (typeof objB[key] === 'object' && typeof objA[key] === 'object') {
// Compare objects recursively
const nestedChanges = differenceFinder(objA[key], objB[key]);
if (Object.keys(nestedChanges).length > 0) {
changes[key] = nestedChanges;
}
} else if (objA[key] !== objB[key]) {
// Compare primitive values
changes[key] = objB[key];
}
}
}
return changes;
}
// Example usage
const oldObj = {
title: "Development",
admin: "101",
features: ["webapps", "modules"],
settings: {
theme: "dark",
notifications: true
}
};
const newObj = {
title: "Development2",
admin: "101",
settings: {
theme: "light",
notifications: true
}
};
console.log(differenceFinder(oldObj, newObj));