Camelify

by sammy

JavaScript

var o = {
    test_ing: 1,
    foo_bar: {
        camel_case: 2
    },
    foo: [{bar_baz: 'ha'}]
};

function enCamelify(o, overwrite) {
    Object.keys(o).reduce(function (p, c) {
        if (typeof p[c] === 'object') enCamelify(p[c], overwrite);
        if (Array.isArray(o)) return p;

        var k = c.replace(/_([a-z])/g, function (s, v) {
            return v.toUpperCase();
        });

        if (k === c) return p;

        if (!overwrite && p[k] != null) throw new Error('Key collision! Possible data loss.');
        
        p[k] = p[c];
        delete p[c];

        return p;
    }, o);
}

enCamelify(o);

console.log(o);