
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
deep-map-keys
Advanced tools
Install | Usage | API | TypeScript | License
Deep Map Keys recurses through an object and transforms its keys – and the keys of any nested objects – according to some function. Circular references are supported.
To transform the values of an object rather than its keys, use Deep Map.
Install Deep Map Keys via npm.
npm install --save deep-map-keys
Suppose we want to change the keys of an object from snake case to camel case. We can do something like this:
const deepMapKeys = require('deep-map-keys');
let comment = {
comment_id: 42,
user_id: 1024,
user_name: 'Mufasa',
content: 'You deliberately disobeyed me.',
viewed_by: [
{ user_id: 3820, user_name: 'Rafiki' },
{ user_id: 8391, user_name: 'Zazu' }
]
};
function snakeToCamel(key) {
return key.replace(/_(\w)/g, (match, char) => char.toUpperCase());
}
let result = deepMapKeys(comment, snakeToCamel);
And the result will look like this:
{
commentId: 42,
userId: 1024,
userName: 'Mufasa',
content: 'You deliberately disobeyed me.',
viewedBy: [
{ userId: 3820, userName: 'Rafiki' },
{ userId: 8391, userName: 'Zazu' }
]
}
deepMapKeys(object, mapFn, [options])
Param | Type | Description |
---|---|---|
object | any |
The object whose keys are to be transformed. Typically, this will be
a complex object containing other nested objects. This object may be an
Array , in which case the keys of any objects it
contains will be transformed. The object may contain circular
references.
|
mapFn | function |
The function used to transform each key. The function is
called with two arguments:
|
[options] | object |
An optional options object. The following option is accepted:
|
Returns a new object.
TypeScript declarations are included in the package. Just import the module, and things will just work.
The shape of the returned object cannot be inferred from the inputs; however it can be defined by passing a single type argument.
interface Result {
userName: string;
}
let result = deepMapKeys<Result>({user_name: 'Pumbaa'}, snakeToCamel);
let name = result.userName; // Everything is OK :)
Copyright © 2016–2019 Akim McMath. Licensed under the MIT License.
FAQs
Transforms nested keys of complex objects
The npm package deep-map-keys receives a total of 13,100 weekly downloads. As such, deep-map-keys popularity was classified as popular.
We found that deep-map-keys demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.