I want to convert flat structure array into a tree structure for one my projects. Below is the input and expected output:
Input:
let input=[
    {
        lvl1:"Code1",
        lvl2:"Type1",
        lvl3:"Desc1",
        lvl4:"Check1"
    },
    {
        lvl1:"Code1",
        lvl2:"Type1",
        lvl3:"Desc1",
        lvl4:"Check2"
    },
    {
        lvl1:"Code2",
        lvl2:"Type2",
        lvl3:"Desc2",
        lvl4:"Check1"
    },
]
Output:
[
    {
        level_key:"lvl1",
        level_value:"Code1",
        children:[
            {
                level_key:"lvl2",
                level_value:"Type1",
                children:[
                    {
                        level_key:"lvl3",
                        level_value:"Desc1",
                        children:[
                            {
                                level_key:"lvl4",
                                level_value:"Check1",
                                children:[]
                            },
                            {
                                level_key:"lvl4",
                                level_value:"Check2",
                                children:[]
                            }
                        ]
                    }
                ]
            }
        ]
    },
    {
        level_key:"lvl1",
        level_value:"Code2",
        children:[
            {
                level_key:"lvl2",
                level_value:"Type2",
                children:[
                    {
                        level_key:"lvl3",
                        level_value:"Desc2",
                        children:[
                            {
                                level_key:"lvl4",
                                level_value:"Check1",
                                children:[]
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
Here in eg. i have taken till lvl4 but any number of levels could be there like lvl5, lvl6....
I have tried a approach but i feel that is very complex and not scalable.