/* * Flatten Object @gdibble: Inspired by https://gist.github.com/penguinboy/762197 * input: { 'a':{ 'b':{ 'b2':2 }, 'c':{ 'c2':2, 'c3':3 } } } * output: { 'a.b.b2':2, 'a.c.c2':2, 'a.c.c3':3 } */ var flattenObject = function(ob) { var toReturn = {}; var flatObject; for (var i in ob) { if (!ob.hasOwnProperty(i)) { continue; } if ((typeof ob[i]) === 'object') { flatObject = flattenObject(ob[i]); for (var x in flatObject) { if (!flatObject.hasOwnProperty(x)) { continue; } toReturn[i + (!!isNaN(x) ? '.' + x : '')] = flatObject[x]; } } else { toReturn[i] = ob[i]; } } return toReturn; };