JavaScript: Flatten an object with the paths for keys
JavaScript fundamental (ES6 Syntax): Exercise-233 with Solution
Flatten Object Keys as Paths
Write a JavaScript program to flatten an object with the paths for keys.
- Use recursion.
- Use Object.keys(obj) combined with Array.prototype.reduce() to convert every leaf node to a flattened path node.
- If the value of a key is an object, the function calls itself with the appropriate prefix to create the path using Object.assign().
- Otherwise, it adds the appropriate prefixed key-value pair to the accumulator object. You should always omit the second argument, prefix, unless you want every key to have a prefix.
Sample Solution:
JavaScript Code:
// Define a function 'flattenObject' that flattens nested objects into a single-level object with dot-separated keys
const flattenObject = (obj, prefix = '') =>
Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? prefix + '.' : ''; // Construct the prefix for the current key
if (typeof obj[k] === 'object') // If the current value is an object, recursively call 'flattenObject' and merge the result into the accumulator
Object.assign(acc, flattenObject(obj[k], pre + k));
else acc[pre + k] = obj[k]; // Otherwise, assign the current value to the accumulator with the constructed key
return acc; // Return the accumulator
}, {});
// Test the 'flattenObject' function with a sample object
console.log(flattenObject({ a: { b: { c: 1 } }, d: 1 }));
Output:
{"a.b.c":1,"d":1}
Flowchart:
Live Demo:
See the Pen javascript-basic-exercise-233-1 by w3resource (@w3resource) on CodePen.
Improve this sample solution and post your code through Disqus
Previous: Write a JavaScript program that takes a function as an argument, then makes the first argument the last.
Next: Write a JavaScript program to flatten a given array up to the specified depth.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics