我有以下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);编辑:它必须能够递归处理具有两个以上嵌套的数据。
发布于 2020-01-29 18:39:35
const arr = [{
title: "cat1",
size: 465,
children: [{
title: "Monday",
size: 240
},
{
title: "Tuesday",
size: 225
}
]
},
{
title: "cat2",
size: 200,
children: [{
title: "Monday",
size: 200
}]
}
];
arr.map(el => {
const childSize = el.children.reduce((acc, item) => acc += item.size, 0);
return { ...el,
size: childSize
}
});
console.log(arr)
https://stackoverflow.com/questions/59965168
复制相似问题