I need to rearrange a chained object to a non-chained one. So, I need to create more objects to represent this.
basicaly I have this:
1. Person (code:1) (level 1)
1.2 Person (code:2) (level 2)
1.2.1 Person (code:3) (level 3)
1.3 Person (code:4) (level 2)
1.3.1 Person (code:5) (level 3)
1.3.2 Person (code:6) (level 3)
And, expect this:
- Person (code:1) (level 1)
- Person (code:2) (level 2)
- Person (code:3) (level 3)
- Person (code:4) (level 2)
- Person (code:5) (level 3)
- Person (code:6) (level 3)
Now, in real world. My object:
[
{
"id": 5,
"name": "Jhon",
"code": "2",
"employee_lvl2": [
{
"id": 23,
"name": "Rodolf (John's employee 1)",
"code": "9",
"employee_lvl3": [
{
"id": 5,
"name": "Marcus (Rodolf's employee 1)",
"code": "18"
}
]
},
{
"id": 17,
"name": "Samuel (John's employee 2)",
"code": "16",
"employee_lvl3": [
{
"id": 11,
"name": "Jacob (Samuel's employee 1)",
"code": "21"
},
{
"id": 18,
"name": "Agnes (Samuel's employee 2)",
"code": "31"
}
]
}
]
},
{
"id": 4,
"name": "Jennifer",
"code": "1",
"employee_lvl2": [
{
"id": 8,
"name": "James (Jennifer's employee 1)",
"code": "3",
"employee_lvl3": [
{
"id": 12,
"name": "Jonathan (James's employee 1)",
"code": "8"
},
{
"id": 8,
"name": "Agnes (James's employee 2)",
"code": "3"
}
]
},
{
"id": 7,
"name": "Julie (Jennifer's employee 2)",
"code": "6",
"employee_lvl3": [
{
"id": 1,
"name": "Jacob (Julie's employee 1)",
"code": "1"
}
]
}
]
}
]
I expect something like: (ordered by code in all levels and stacking code in a property "stacked_code")
[
{
"id": 4,
"name": "Jennifer",
"code": "1"
},
{
"id": 8,
"name": "James (Jennifer's employee 1)",
"code": "3",
"stacked_code": "1.3"
},
{
"id": 8,
"name": "Agnes (James's employee 2)",
"code": "3",
"stacked_code": "1.3.3"
},
{
"id": 12,
"name": "Jonathan (James's employee 1)",
"code": "8",
"stacked_code": "1.3.8"
},
{
"id": 7,
"name": "Julie (Jennifer's employee 2)",
"code": "6",
"stacked_code": "1.6"
},
{
"id": 1,
"name": "Jacob (Julie's employee 1)",
"code": "1",
"stacked_code": "1.6.1"
},
{
"id": 5,
"name": "Jhon",
"code": "2"
},
{
"id": 23,
"name": "Rodolf (John's employee 1)",
"code": "9",
"stacked_code": "2.9"
},
{
"id": 5,
"name": "Marcus (Rodolf's employee 1)",
"code": "18",
"stacked_code": "2.9.18"
},
{
"id": 17,
"name": "Samuel (John's employee 2)",
"code": "16",
"stacked_code": "2.16"
},
{
"id": 11,
"name": "Jacob (Samuel's employee 1)",
"code": "21",
"stacked_code": "2.16.21"
},
{
"id": 18,
"name": "Agnes (Samuel's employee 2)",
"code": "31",
"stacked_code": "2.16.31"
}
]
I tried using some map() and push array but nothing significant. I know this somehow works with reduce but I can't help myself at the moment.
You can use a recursive function to solve this problem.
There
objis your input object.Outpur array will be looked like-