I have two objects. Basically a model and data situation. Can't figure out how to recursively delete items in the data object, that have been removed from the model.
First is the model:
var foo = {
"title": "Enter title",
"info": {
"released": "Enter year",
"runtime": "Enter time"
}
}
The other one is the data:
var bar = {
"title": "Forrest Gump",
"info": {
"released": "1994",
"runtime": "02:22",
"awards": "3"
}
"genre": "Drama/Comedy-drama"
}
I'm trying to do a generic comparison between two objects that would result in:
var bar = {
"title": "Forrest Gump",
"info": {
"released": "1994",
"runtime": "02:22"
}
}
Any help would be very appreciated!
A super bonus would be if it would be able to add object keys+values that exist in the blueprint but not in the data. I have that working separately, but it would be a nice bonus!
A recursive function over Object.keys
should work perfectly:
var foo = {
"title": "Enter title",
"info": {
"released": "Enter year",
"runtime": "Enter time"
}
};
var bar = {
"title": "Forrest Gump",
"info": {
"released": "1994",
"runtime": "02:22",
"awards": "3"
},
"genre": "Drama/Comedy-drama"
}
function getBoth(base, data) {
var result = {};
Object.keys(base).forEach(key => {
if (typeof base[key] == "object" && data[key]) {
result[key] = getBoth(base[key], data[key]);
} else if (data[key]) {
result[key] = data[key];
}
});
return result;
}
console.log(getBoth(foo, bar));