Skip to content

Instantly share code, notes, and snippets.

@joelcardinal
Created April 4, 2019 02:11
Show Gist options
  • Save joelcardinal/4d3981ccb3814ea0704f93cea5d2ce81 to your computer and use it in GitHub Desktop.
Save joelcardinal/4d3981ccb3814ea0704f93cea5d2ce81 to your computer and use it in GitHub Desktop.
Diff Objects
var oldObj = {
a:{value:1},
b:{value:2},
c:{value:3}
}
var newObj = {
// no a
b:{value:4}, // value change
c:{value:3},
d:{value:3} // new d
}
function diffObj(oldObj,newObj){
diffObj = {};
for(var k in oldObj){
if(newObj[k] === undefined){
console.log('deleted');
oldObj[k].status = 'deleted';
diffObj[k] = oldObj[k];
}else if(oldObj[k].value !== newObj[k].value){
console.log('modified');
oldObj[k].status = 'modified';
diffObj[k] = oldObj[k];
delete newObj[k];
}else if(newObj[k] !== undefined && oldObj[k].value === newObj[k].value){
delete newObj[k];
}
}
for(var y in newObj){
newObj[y].status = 'new';
diffObj[y] = newObj[y];
}
return diffObj;
}
diffObj(oldObj,newObj);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment