diff --git a/snippets/renameKeys.md b/snippets/renameKeys.md new file mode 100644 index 000000000..419062323 --- /dev/null +++ b/snippets/renameKeys.md @@ -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 } +``` diff --git a/tag_database b/tag_database index f086f5c62..7f3102125 100644 --- a/tag_database +++ b/tag_database @@ -217,6 +217,7 @@ reduceSuccessive:array,function reduceWhich:array,function remove:array removeNonASCII:string,regexp +renameKeys:object reverseString:string,array RGBToHex:utility round:math diff --git a/test/renameKeys/renameKeys.js b/test/renameKeys/renameKeys.js new file mode 100644 index 000000000..1a02ed11a --- /dev/null +++ b/test/renameKeys/renameKeys.js @@ -0,0 +1,7 @@ +const renameKeys = (keysMap, obj) => Object +.keys(obj) +.reduce((acc, key) => ({ +...acc, +...{ [keysMap[key] || key]: obj[key] } +}), {}); +module.exports = renameKeys; diff --git a/test/renameKeys/renameKeys.test.js b/test/renameKeys/renameKeys.test.js new file mode 100644 index 000000000..42900ec17 --- /dev/null +++ b/test/renameKeys/renameKeys.test.js @@ -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(); +});