I am trying to transform following array
but it’s only transforming single level. multiple remain same want to remove entity for each level of object.
I have used the map to modify object not sure if there are others method for the multi level
Here is the array
const source = [ { "block_id": 1, "entity": 100, "block_name": "test 1", "children": [ { "block_id": 2, "entity": 101, "block_name": "test 2", "children": [ { "block_id": 3, "entity": 105, "block_name": "test 2", } ] } ], } ]
Tried following code to transform
function trans(item) { const items = Array.isArray(item) ? item : [item]; return items.map( t => { return { block_id: t.block_id, block_name: t.block_name, children: t.children }; }); }
I am getting following
Output
[ { "block_id": 1, "block_name": "test 1", "children": [ { "block_id": 2, "entity": 101, "block_name": "test 2", "children": [ { "block_id": 3, "entity": 105, "block_name": "test 2", } ] } ], } ]
Expected
[ { "block_id": 1, "block_name": "test 1", "children": [ { "block_id": 2, "block_name": "test 2", "children": [ { "block_id": 3, "block_name": "test 2", } ] } ], } ]
Please help
Advertisement
Answer
Wanted result can be implemented easily with recursion
:
const source = [ { "block_id": 1, "entity": 100, "block_name": "test 1", "children": [ { "block_id": 2, "entity": 101, "block_name": "test 2", "children": [ { "block_id": 3, "entity": 105, "block_name": "test 2", } ] } ], }]; const transform=arr=>arr.map(({entity,...rest})=> rest.children ? ({...rest, children: transform(rest.children)}) : rest); console.log(transform(source));