正在寻找javascript或typescript解决方案,以将此sql数据数组转换为树结构:
我尝试过的一些其他解决方案将id设置为预期数组中的属性,但不像预期解决方案中那样设置对象的键。
const sqlData = [
{ id: 1, label: 'root', parentId: 0 },
{ id: 2, label: 'ant', parentId: 1 },
{ id: 3, label: 'cat', parentId: 1 },
{ id: 4, label: 'bear', parentId: 3 },
{ id: 5, label: 'dog', parentId: 3 },
{ id: 6, label: 'elephant', parentId: 5 },
{ id: 7, label: 'frog', parentId: 1 },
];
const expected = [
{
1: {
label: 'root',
children: [
{
2: {
label: 'ant',
children: [],
},
},
{
3: {
label: 'cat',
children: [
{
4: {
label: 'cat',
children: [],
},
},
{
5: {
label: 'dog',
children: [
{
6: {
label: 'elephant',
children: [],
},
},
],
},
},
],
},
},
{
7: {
label: 'frog',
children: [],
},
},
],
},
},
];
1条答案
按热度按时间gmol16391#
这可以通过利用对象引用以o(n)的时间复杂度来完成。通过创建
children
数组,然后将正确的子元素添加到其父元素的子元素数组中,就可以完成整个树的构建。