I can't figure it out how to 'unflat' the object below.
The criteria for the parent > child relationship is the number property, like so: 1 (parent) > 1.1 (child)
It's parcially correct. The .map() end up repeating items that were already in the theirs parent objects.
const arr = [
{ name: 'task a', number: '1' },
{ name: 'task b', number: '1.1'},
{ name: 'task c', number: '1.2' },
{ name: 'task d', number: '2' },
{ name: 'task e', number: '2.1' },
{ name: 'task f', number: '2.1.1' }
];
const output = arr.map((element) => {
const re = new RegExp(`^(${element.number}\.)\\d$`)
element.subRows = arr.filter((e) => {
return e.number.match(re)
})
return element
})
output.forEach((x) => {
console.log(x)
})
Expected output:
const data = [
{
name: 'task a',
number: '1',
subRows: [
{
name: 'task b',
number: '1.1',
subRows: []
},
{
name: 'task c',
number: '1.2',
subRows: []
}
]
},
{
name: 'task d',
number: '2',
subRows: [
{
name: 'task e',
number: '2.1',
subRows: [
{
name: 'task f',
number: '2.1.1',
subRows: []
}
]
},
]
},
];
element.number.split('.')and then use something like stackoverflow.com/questions/34054601/…