Deep camelize keys
by Bart Kalisz
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
JavaScript
console.clear();
const deepCamelizeKeys = obj => {
const isArray = _.isArray(obj);
let output = isArray ? [] : {};
Object.entries(obj).forEach(([key, val]) => {
const isValueObject = typeof val === "object" && !!Object.keys(val).length;
const value = isValueObject ? deepCamelizeKeys(val) : val;
if (isArray) {
output.push(value);
} else {
Object.assign(output, { [_.camelCase(key)]: value });
}
});
return output;
}
const json = {
alfa_romeo: 1,
ford_focus: [1, 2, { john_talabot: 3 }],
andy_hughes: {
meryl_streep: false,
volks_wagen: [
{ golf_v: true, passat: false },
'hey',
'dude',
],
},
};
let time = Date.now();
const camelJson = deepCamelizeKeys(json);
time = Date.now() - time;
console.log(camelJson);
console.log(`mapped in ${time}ms`);