2.0.1 • Published 5 years ago

deep-map-keys v2.0.1

Weekly downloads
31,765
License
MIT
Repository
github
Last release
5 years ago

Deep Map Keys

Version License Build Coverage

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

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

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

API

deepMapKeys(object, mapFn, [options])

Parameters

Returns

Returns a new object.

TypeScript

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 :)

License

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

2.0.1

5 years ago

2.0.0

5 years ago

1.2.0

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago