diff --git a/snippets/unflattenObject.md b/snippets/unflattenObject.md index a2e757ac9..d3cd0710c 100644 --- a/snippets/unflattenObject.md +++ b/snippets/unflattenObject.md @@ -9,18 +9,14 @@ Unflatten an object with the paths for keys. - Split each key with a dot delimiter (`.`) using `Array.prototype.split('.')`and use `Array.prototype.reduce()` to convert flattened paths to leaf node. - If the current accumulator already contains value against a particular key, return its value as the next accumulator. - Otherwise, add the appropriate key-value pair to the accumulator object and return value as the accumulator. - - ```js const unflattenObject = obj =>{ - var result = {} - Object.keys(obj).forEach((k)=>{ - var keys = k.split('.') - keys.reduce(function(acc, e, i) { - return acc[e] || (acc[e] = isNaN(Number(keys[i + 1])) ? (keys.length - 1 === i ? obj[k] : {}) : []) - }, result) - }) - return result + return Object.keys(obj).reduce((acc1 , k)=>{ + k.split('.').reduce(function(acc, e, i , keys) { + return acc[e] || (acc[e] = isNaN(Number(keys[i + 1])) ? (keys.length - 1 === i ? obj[k] : {}) : []); + }, acc1) + return acc1; + },{}); } ```