JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 14319
  • Score
    100M100P100Q142366F
  • License MIT

Transforms nested keys of complex objects

Package Exports

  • deep-map-keys

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (deep-map-keys) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Deep Map Keys

Version License Build Coverage Dependencies

Deep Map Keys recurses through an object and transforms its keys – and the keys of any nested objects – according to some function.

Install

Install Deep Map Keys via npm.

npm install --save deep-map-keys

Usage

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' }
  ]
};

let result = deepMapKeys(comment, key => {
  return key.replace(/_(\w)/g, (match, char) => char.toUpperCase());
});

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' }
  ]
}

API

deepMapKeys(object, mapFn, [options])

Parameters

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.
mapFn function The function used to transform each key. The function is called with two arguments:
  • key <string> The key being transformed
  • value <any> The value of the node whose key is being transformed
The return value determines the new name of the key, and must therefore be a string.
[options] object An optional options object. The following option is accepted:
  • thisArg <any = undefined> Sets the value of this within mapFn()

Returns

Returns a new object.

License

Copyright © 2016 Akim McMath. Licensed under the MIT License.