transform-keys
Version:
Recursively transform object keys with a custom key transform strategy
25 lines (24 loc) • 646 B
JavaScript
module.exports = function(object, transformKeyFn) {
if (typeof transformKeyFn == 'function') {
return transform(transformKeyFn)(object);
}
return transform(object);
};
function transform(transformKeyFn) {
return function transformKeys(object) {
if (Array.isArray(object)) {
return object.map(transformKeys);
}
if (!object || typeof object !== 'object') {
return object;
}
var keys = Object.keys(object);
if (keys.length === 0) {
return object;
}
return keys.reduce(function (acc, key) {
acc[transformKeyFn(key)] = transformKeys(object[key]);
return acc;
}, {});
}
}