DEV Community

Matt Ellen-Tsivintzeli
Matt Ellen-Tsivintzeli

Posted on

2 2

Answer: Flatten nested object/array in javascript

I answered this question with a neat little algorithm.

The premise of the question is to turn this:

[{ a: 2, b: [{ c: 3, d: [{e: 4, f: 5}, {e: 5,f: 6}]}, 
             { c: 4, d: [{e: 7, f: 8}]}
            ]
}]
Enter fullscreen mode Exit fullscreen mode

into this:

[{a:2,c:3,e:4,f:5}, {a:2,c:3,e:5,f:6}, {a:2,c:4,e:7,f:8}]
Enter fullscreen mode Exit fullscreen mode

It was surprisingly tricky. My first few attempts always produced duplicates. I considered creating a blank result object "template" and then filling one out for every array, but that sounded like too much work.

In the end I recurse for every array and then when the call comes back I combine the returned array with the current array in a way that won't overwrite existing properties.

Take a look!

It's a bit of a behemoth, and it doesn't preserve the keys' order, but it does work with no duplicates.

It is recursive, so watch out for the call stack.

  • First, loop through the items in the array,
  • If an item is an array, make a recursive call
    • On returning…

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)