Merge pull request #646 from yazeedb/add-renameKeys

[FEATURE] renameKeys
This commit is contained in:
Angelos Chalaris
2018-04-12 21:43:14 +03:00
committed by GitHub
4 changed files with 42 additions and 0 deletions

19
snippets/renameKeys.md Normal file
View File

@ -0,0 +1,19 @@
### renameKeys
Replaces the names of multiple object keys with the values provided.
Use `Object.keys()` in combination with `Array.reduce()` and the spread operator (`...`) to get the object's keys and rename them according to `keysMap`.
```js
const renameKeys = (keysMap, obj) => Object
.keys(obj)
.reduce((acc, key) => ({
...acc,
...{ [keysMap[key] || key]: obj[key] }
}), {});
```
```js
const obj = { name: 'Bobo', job: 'Front-End Master', shoeSize: 100 };
renameKeys({ name: 'firstName', job: 'passion' }, obj); // { firstName: 'Bobo', passion: 'Front-End Master', shoeSize: 100 }
```

View File

@ -217,6 +217,7 @@ reduceSuccessive:array,function
reduceWhich:array,function
remove:array
removeNonASCII:string,regexp
renameKeys:object
reverseString:string,array
RGBToHex:utility
round:math

View File

@ -0,0 +1,7 @@
const renameKeys = (keysMap, obj) => Object
.keys(obj)
.reduce((acc, key) => ({
...acc,
...{ [keysMap[key] || key]: obj[key] }
}), {});
module.exports = renameKeys;

View File

@ -0,0 +1,15 @@
const test = require('tape');
const renameKeys = require('./renameKeys.js');
test('Testing renameKeys', (t) => {
//For more information on all the methods supported by tape
//Please go to https://github.com/substack/tape
t.true(typeof renameKeys === 'function', 'renameKeys is a Function');
const obj = { name: 'Bobo', job: 'Front-End Master', shoeSize: 100 };
const renamedObj = renameKeys({ name: 'firstName', job: 'passion' }, obj);
t.deepEqual(renamedObj, { firstName: 'Bobo', passion: 'Front-End Master', shoeSize: 100 });
t.end();
});