20 lines
615 B
JavaScript
20 lines
615 B
JavaScript
module.exports = function deepMapKeys(originalObject, callback) {
|
|
if (typeof originalObject !== "object" || originalObject === null) {
|
|
return originalObject
|
|
}
|
|
|
|
return Object.keys(originalObject || {}).reduce((newObject, key) => {
|
|
const newKey = callback(key)
|
|
const originalValue = originalObject[key]
|
|
let newValue = originalValue
|
|
if (Array.isArray(originalValue)) {
|
|
newValue = originalValue.map((item) => deepMapKeys(item, callback))
|
|
} else {
|
|
newValue = deepMapKeys(originalValue, callback)
|
|
}
|
|
return {
|
|
...newObject,
|
|
[newKey]: newValue,
|
|
}
|
|
}, {})
|
|
}
|