Skip to content

Instantly share code, notes, and snippets.

@kumarrishav
Forked from slidenerd/flatten.js
Created May 24, 2017 09:05
Show Gist options
  • Save kumarrishav/ccdc3950b8f9aa28d36d8b7354a29f55 to your computer and use it in GitHub Desktop.
Save kumarrishav/ccdc3950b8f9aa28d36d8b7354a29f55 to your computer and use it in GitHub Desktop.
Inspired from gdibble
function flattenObject(ob) {
let toReturn = {};
let flatObject;
for (let i in ob) {
console.log(i+ ' ' + typeof(ob[i]));
if (!ob.hasOwnProperty(i)) {
continue;
}
//Exclude arrays from the final result
//Check this http://stackoverflow.com/questions/4775722/check-if-object-is-array
if(ob[i] && Array === ob[i].constructor){
continue;
}
if ((typeof ob[i]) === 'object') {
flatObject = flattenObject(ob[i]);
for (let x in flatObject) {
if (!flatObject.hasOwnProperty(x)) {
continue;
}
//Exclude arrays from the final result
if(flatObject[x] && Array === flatObject.constructor){
continue;
}
toReturn[i + (!!isNaN(x) ? '.' + x : '')] = flatObject[x];
}
} else {
toReturn[i] = ob[i];
}
}
return toReturn;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment