snippet:
// flatten object to one depth
const obj = {
'name': 'jane',
'last_name': 'doe',
'profession': 'engineer',
'characteristics': {
'intelligent': true,
'punctual': false,
'experience': {
'2012': 'college passout',
'2014': 'mba passout',
'2016': 'employed'
}
}
};
function flattenObject(ob, prefix) {
const toReturn = {};
prefix = prefix ? prefix + '.' : '';
for (let i in ob) {
if (!ob.hasOwnProperty(i)) continue;
if (typeof ob[i] === 'object' && ob[i] !== null) {
// Recursion on deeper objects
Object.assign(toReturn, flattenObject(ob[i], prefix + i));
} else {
toReturn[prefix + i] = ob[i];
}
}
return toReturn;
}
console.log(flattenObject(obj));
Output:
{ name: 'jane',
last_name: 'doe',
profession: 'engineer',
'characteristics.intelligent': true,
'characteristics.punctual': false,
'characteristics.experience.2012': 'college passout',
'characteristics.experience.2014': 'mba passout',
'characteristics.experience.2016': 'employed'
}
Learn more : https://stackoverflow.com/questions/44134212/best-way-to-flatten-js-object-keys-and-values-to-a-single-depth-array