Javascript 获取嵌套对象的聚合大小

Javascript 获取嵌套对象的聚合大小,javascript,nested,aggregate,Javascript,Nested,Aggregate,我有以下JS对象: [ { 标题:“cat1”, 儿童:[ { 标题:“星期一”, 儿童:[ {标题:“尺寸1”,尺寸:120}, {标题:“尺寸2”,尺寸:75}, {标题:“尺寸3”,尺寸:45} ] }, { 标题:“星期二”, 儿童:[ {标题:“尺寸1”,尺寸:105}, {标题:“尺寸2”,尺寸:45}, {标题:“尺寸3”,尺寸:75} ] } ] }, { 标题:“第二类”, 儿童:[ { 标题:“星期一”, 儿童:[ {标题:“尺寸1”,尺寸:60}, {标题:“尺寸2”,尺寸

我有以下JS对象:

[
{
标题:“cat1”,
儿童:[
{
标题:“星期一”,
儿童:[
{标题:“尺寸1”,尺寸:120},
{标题:“尺寸2”,尺寸:75},
{标题:“尺寸3”,尺寸:45}
]
},
{
标题:“星期二”,
儿童:[
{标题:“尺寸1”,尺寸:105},
{标题:“尺寸2”,尺寸:45},
{标题:“尺寸3”,尺寸:75}
]
}
]
},
{
标题:“第二类”,
儿童:[
{
标题:“星期一”,
儿童:[
{标题:“尺寸1”,尺寸:60},
{标题:“尺寸2”,尺寸:40}
]
}
]
}
];
并希望评估每个嵌套中大小的聚合。说我会得到

[
{
标题:“cat1”,
尺码:465,
儿童:[
{
标题:“星期一”,
尺码:240
},
{
标题:“星期二”,
尺码:225
}
]
},
{
标题:“第二类”,
尺寸:200,
儿童:[
{
标题:“星期一”,
尺码:200
}
]
}
];
到目前为止,我有下面的代码,但是如果嵌套是两个或更多,它就不起作用。我猜这是因为一些与“通过引用调用”相关的东西,但不确定如何修复它。谁能帮我一个忙吗

const getFrequency=(项:任意)=>{
控制台日志(项目);
如果(项[0]。子项[0]。子项===未定义){
item.map((item2:any)=>({
标题:item2.title,
大小:item2.children.reduce((上一个:数字,当前:任意)=>上一个+当前大小,0)
}));
}否则{
item.map((item2:any)=>({
标题:item2.title,
儿童:项目2.儿童,
大小:getFrequency(项2.子项)
}));
}
退货项目;
};
const frequedata=getFrequency(nestedData);
编辑:它必须能够递归处理两个以上嵌套的数据。

const arr=[{
标题:“cat1”,
尺码:465,
儿童:[{
标题:“星期一”,
尺码:240
},
{
标题:“星期二”,
尺码:225
}
]
},
{
标题:“第二类”,
尺寸:200,
儿童:[{
标题:“星期一”,
尺码:200
}]
}
];
arr.map(el=>{
const childSize=el.childs.reduce((acc,item)=>acc+=item.size,0);
返回{…el,
尺寸:儿童尺寸
}
});

console.log(arr)
你说的“嵌套是两个或更多”是什么意思?你有这样的例子吗?我的意思是,如果数据只有一个嵌套,那么它就可以工作,在这种情况下,只有“星期几”数组(不包括“类别”)。如果预期嵌套深度更大,那么你可能希望在示例中显示它。这听起来像是一个简单的额外要求,但它使它成为一个更困难的挑战。不管怎样,我见过它是通过递归完成的。好吧,我没有明确提到它。它必须能够递归处理,这意味着它可以处理两个以上嵌套的数据