Add flattenObject, unflattenObject
Tagged and tested. Quite complex methods btw.
This commit is contained in:
19
test/unflattenObject/unflattenObject.js
Normal file
19
test/unflattenObject/unflattenObject.js
Normal file
@ -0,0 +1,19 @@
|
||||
const unflattenObject = obj =>
|
||||
Object.keys(obj).reduce((acc, k) => {
|
||||
if (k.indexOf('.') !== -1) {
|
||||
const keys = k.split('.');
|
||||
Object.assign(
|
||||
acc,
|
||||
JSON.parse(
|
||||
'{' +
|
||||
keys
|
||||
.map((v, i) => (i !== keys.length - 1 ? `"${v}":{` : `"${v}":`))
|
||||
.join('') +
|
||||
obj[k] +
|
||||
'}'.repeat(keys.length)
|
||||
)
|
||||
);
|
||||
} else acc[k] = obj[k];
|
||||
return acc;
|
||||
}, {});
|
||||
module.exports = unflattenObject;
|
||||
14
test/unflattenObject/unflattenObject.test.js
Normal file
14
test/unflattenObject/unflattenObject.test.js
Normal file
@ -0,0 +1,14 @@
|
||||
const test = require('tape');
|
||||
const unflattenObject = require('./unflattenObject.js');
|
||||
|
||||
test('Testing unflattenObject', (t) => {
|
||||
//For more information on all the methods supported by tape
|
||||
//Please go to https://github.com/substack/tape
|
||||
t.true(typeof unflattenObject === 'function', 'unflattenObject is a Function');
|
||||
t.deepEqual(unflattenObject({ 'a.b.c': 1, d: 1 }), { a: { b: { c: 1 } }, d: 1 }, 'Unflattens an object with the paths for keys');
|
||||
//t.deepEqual(unflattenObject(args..), 'Expected');
|
||||
//t.equal(unflattenObject(args..), 'Expected');
|
||||
//t.false(unflattenObject(args..), 'Expected');
|
||||
//t.throws(unflattenObject(args..), 'Expected');
|
||||
t.end();
|
||||
});
|
||||
Reference in New Issue
Block a user