Hello guys I have a problem, I need to create a tree data structure, I'm not able to balance it, I tried some scripts over the internet and I couldn't find a solution, could someone help me?
I have an array of objects.
const data = [
{
id: 1111,
code: '1',
name: 'Item 1',
parent_code: '',
children: []
},
{
id: 11110,
code: '12',
name: 'Item 12',
parent_code: '1',
children: []
},
{
id: 99999,
code: '3',
name: 'Item 33',
parent_code: '',
children: []
},
{
id: 99992,
code: '114',
name: 'Item 114',
parent_code: '3',
children: []
},
{
id: 99993,
code: '115',
name: 'Item 115',
parent_code: '114',
children: []
},
];
how do i need to leave
const expectedData = [
{
id: 1111,
code: '1',
name: 'Item 1',
parent_code: '',
children: [
{
id: 11110,
code: '12',
name: 'Item 12',
parent_code: '1',
children: []
},
]
},
{
id: 99999,
code: '3',
name: 'Item 33',
parent_code: '',
children: [
{
id: 99992,
code: '114',
name: 'Item 114',
parent_code: '3',
children: [
{
id: 99993,
code: '115',
name: 'Item 115',
parent_code: '114',
children: []
},
]
},
]
},
]
I need to add the code and parent code, I tried something and got this result, but it is not what I would like
let parents = [];
data.forEach(d => {
if(!d.parent_code) {
d.children = data.filter(dt => dt.parent_code === dt.code);
parents.push(d);
}
});
console.log(parents);
The result was
const result = [
{
id: 1111,
code: '1',
name: 'Item 1',
parent_code: '',
children: [
{
id: 11110,
code: '12',
name: 'Item 12',
parent_code: '1',
children: []
},
]
},
{
id: 99999,
code: '3',
name: 'Item 33',
parent_code: '',
children: [
{
id: 99992,
code: '114',
name: 'Item 114',
parent_code: '3',
children: []
},
]
},
]
I couldn't get to the third level, look at parent_code 3