У меня есть следующий JS объект:
[
{
title: "cat1",
children: [
{
title: "Monday",
children: [
{ title: "size1", size: 120 },
{ title: "size2", size: 75 },
{ title: "size3", size: 45 }
]
},
{
title: "Tuesday",
children: [
{ title: "size1", size: 105 },
{ title: "size2", size: 45 },
{ title: "size3", size: 75 }
]
}
]
},
{
title: "cat2",
children: [
{
title: "Monday",
children: [
{ title: "size1", size: 60 },
{ title: "size2", size: 40 }
]
}
]
}
];
и я хочу оценить совокупность размеров в каждом гнезде. Скажем, я получу
[
{
title: "cat1",
size: 465,
children: [
{
title: "Monday",
size: 240
},
{
title: "Tuesday",
size: 225
}
]
},
{
title: "cat2",
size: 200,
children: [
{
title: "Monday",
size: 200
}
]
}
];
Пока у меня есть следующий код, но он не работает, если гнездо два или более. Я предполагаю, что это из-за чего-то, связанного с «звонком по ссылке», но не уверен, как это исправить. Кто-нибудь может мне помочь?
const getFrequency = (item: any) => {
console.log(item);
if (item[0].children[0].children === undefined) {
item.map((item2: any) => ({
title: item2.title,
size: item2.children.reduce((prev: number, curr: any) => prev + curr.size, 0)
}));
} else {
item.map((item2: any) => ({
title: item2.title,
children: item2.children,
size: getFrequency(item2.children)
}));
}
return item;
};
const freqData = getFrequency(nestedData);
РЕДАКТИРОВАТЬ: он должен быть способен рекурсивно обрабатывать данные с более чем двумя гнездами.