Flatten JavaScript Object
JavaScript
function flatten_object( obj ) {
var list = {};
(function(o, r) {
r = r || '';
if (typeof o != 'object') { return true; }
for (var c in o) { if (arguments.callee(o[c], r + "." + c)) { list[ r.substring(1) + "." + c ] = o[c] } }
return false;
})(obj);
return list;
}
var settings = {
path: {
worker: 'asf',
logs: 'df',
data: 'df'
},
cluster: {
name: 'default'
},
http: {
port: 8000
}
}
function unflatten(data) {
"use strict";
if (Object(data) !== data || Array.isArray(data))
return data;
var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g,
resultholder = {};
for (var p in data) {
var cur = resultholder,
prop = "",
m;
while (m = regex.exec(p)) {
cur = cur[prop] || (cur[prop] = (m[2] ? [] : {}));
prop = m[2] || m[1];
}
cur[prop] = data[p];
}
return resultholder[""] || resultholder;
};
console.clear();
var o = flatten_object( settings )
console.dir( o );
console.dir(settings[0]);