【发布时间】:2022-11-30 03:36:56
【问题描述】:
我正在尝试重组以下没有 parent_id 的 javascript 平面数组。
我想为 React Tree Table 提供一个结构,例如此页面中的示例: https://www.robinwieruch.de/react-tree-table/
data = [{
id: 1,
activity: 'Activity 1',
workplace: 'Workplace 1',
machine: 'Machine 1',
error: 'Error 1'
number: 'Doc number 1'
hours: 4,
},
{
id: 2,
activity: 'Activity 1',
workplace: 'Workplace 1',
machine: 'Machine 2',
error: 'Error 2'
number: 'Doc number 2'
hours: 3,
},
{
id: 3,
activity: 'Activity 2',
workplace: 'Workplace 2',
machine: 'Machine 3',
error: 'Error 3'
number: 'Doc number 3'
hours: 3,
},
{
id: 4,
activity: 'Activity 2',
workplace: 'Workplace 3',
machine: 'Machine 4',
error: 'Error 4'
number: 'Doc number 4'
hours: 6,
},
....
]
我想要一个根据这个数组的键动态分组的另一个数组:
groups = ['activity', 'workplace', ...]
我想要一个这样的结构并将另一个数组传递给组。 理想情况下,希望对每个组中的小时数求和
data = [{
name: 'Activity 2',
hours: 7
nodes: [
name: 'Workplace 2',
hours: 7,
nodes: [{
id: 1,
activity: 'Activity 1',
workplace: 'Workplace 1',
machine: 'Machine 1',
error: 'Error 1'
number: 'Doc number 1'
hours: 4,
},
id: 2,
activity: 'Activity 1',
workplace: 'Workplace 1',
machine: 'Machine 2',
error: 'Error 2'
number: 'Doc number 2'
hours: 3,
},
]
]
},
{
name: 'Activity 2',
hours: 7
nodes: [
name: 'Workplace 2',
hours: 3,
nodes: [{
id: 1,
activity: 'Activity 2',
workplace: 'Workplace 2',
machine: 'Machine 3',
error: 'Error 3'
number: 'Doc number 3'
hours: 3,
}
]
],
[
name: 'Workplace 3',
hours: 6,
nodes: [{
id: 1,
activity: 'Activity 2',
workplace: 'Workplace 3',
machine: 'Machine 4',
error: 'Error 4'
number: 'Doc number 4'
hours: 6,
}
]
]
}]
我已经制作了这段代码:
const groupOverview = () => data
.reduce((r, o) => {
activatedGroup.reduce((p, key) => {
let name = o[key],
temp = (p.nodes = p.nodes || []).find(q => q.name === name);
if (!temp) {
p.nodes.push(temp = { name });
}
return temp;
}, r)
return r;
}, { nodes: [] })
.nodes;
但是我没有最后一个孩子的总和和所有信息。
【问题讨论】:
标签: javascript reactjs algorithm tree