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]);