Flatten javascript object to single depth array

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