我遇到了一个基于JavaScript对象属性实现分组的场景。
这是输入内容:
这是我期望的输出结果:
我寻找上述输出的原因是因为我计划在其中一个图表中使用它,该图表期望以这种方式获取数据。
预期输出:
这是输入内容:
[
{
'A': 1,
'B': 5,
'C': 7,
'D': 67
},
{
'A': 1,
'B': 5,
'C': 7,
'D': 69
}
]
这是我期望的输出结果:
{
name: 1,
children: [
{
name: 5,
children: [
{
name: 7,
children: [
{
name: 67
},
{
name: 69
}
]
}
]
}
]
}
我寻找上述输出的原因是因为我计划在其中一个图表中使用它,该图表期望以这种方式获取数据。
另一个示例输入:
[
{
'A': 1,
'B': 5,
'C': 4,
'D': 67
},
{
'A': 1,
'B': 5,
'C': 7,
'D': 69
}
]
预期输出:
{
name: 1,
children: [
{
name: 5,
children: [
{
name: 4,
children: [
{
name: 67
}
]
},
{
name: 7,
children: [
{
name: 69
}
]
}
]
}
]
}
第一个属性A将始终保持不变,其余属性可以不同,并且基于这些属性的输出也可能会改变。
我试图传入输入数据和要根据其进行分组的键 - 在我的情况下是[A, B, C, D]。
const cstmKey = keys[0];
const grpdData = {
name: data[0][cstmKey],
};
const grpdValues = data.reduce((acc, item) => {
const customValue = item[cstmKey];
if (!acc.includes(customValue)) {
acc.push(customValue);
}
return acc;
}, []);
我计划在 'grpdData' 上进行映射,但是没有想到任何实质性的东西。
为了排序,我试图根据另一个变量来实现,可以在其中定义顺序。例如:- const order = ['A', 'B', 'C', 'D']