I am trying to learn more about array of objects. I have flatten array of objects and i am trying to nest it with levels when they have unique values. The thing is now i am using reduce, and getting new objects for each.
data = [
{ name1 : 'Tenis', id1: 1, name2: ATP, id2: 2, name3: Men Singles, id3: 4}
{ name1 : 'Tenis', id1: 1, name2: ATP, id2: 2, name3: Men Singles, id3: 4}
{ name1 : 'Tenis', id1: 1, name2: ATP, id2: 2, name3: Men Doubles, id3: 5}
{ name1 : 'Tenis', id1: 1, name2: WTA, id2: 3, name3: Women Doubles, id3: 6}
{ name1 : 'Tenis', id1: 1, name2: WTA, id2: 3, name3: Women Singles, id3: 7}
]
I want result to be:
result: [
{ sport: 'Tenis',
league:
[{
ATP: [{ event: Men Singles, Men Doubles }]
WTA: [{ event: Women Singles, Women Doubles }]
}]
}]
My code now:
const result = data.reduce((arr, item) => {
if (arr.indexOf(item.name1) === -1) {
arr.push({
sport: item.name1 ,
league: item.name2 ,
event: item.name3 ,
})
}
return arr
}, [])
But i am getting every value:
0: {sportName: 'Tenis', league: 'ATP', event: 'Men Singles'}
1: {sportName: 'Tenis', league: 'WTA', event: 'Women Doubles'}
2: {sportName: 'Tenis', league: 'WTA', event: 'Women Doubles'}
.... etc
What i need to do, to obtain one nested object? I am literally blocked in mind.