Javascript 从对象数组创建Priming树表json

Javascript 从对象数组创建Priming树表json,javascript,arrays,json,typescript,primeng,Javascript,Arrays,Json,Typescript,Primeng,我有一个已排序的对象数组。它们不是通过ID相互连接的,而是通过文本连接的 let result = [ { col1: "A" , col2: "a" , col3: "1", col4: [10,15] }, { col1: "A" , col2: "c" , col3: "1", col4: [30,35] }, { col1: "B" , col2: "b" , col3: "1", col4: [20,25] }, { col1: "C" , col2:

我有一个已排序的对象数组。它们不是通过ID相互连接的,而是通过文本连接的

let result = [
    { col1: "A" , col2: "a" , col3: "1", col4: [10,15] },
    { col1: "A" , col2: "c" , col3: "1", col4: [30,35] },
    { col1: "B" , col2: "b" , col3: "1", col4: [20,25] },
    { col1: "C" , col2: "d" , col3: "1", col4: [40,45] },
    { col1: "C" , col2: "d" , col3: "2", col4: [50,55] },
    { col1: "D" , col2: "e" , col3: "3", col4: [60,65] },
    { col1: "D" , col2: "e" , col3: "4", col4: [70,75] },
    { col1: "D" , col2: "f" , col3: "1", col4: [80,85] }
]
我需要从该数组中绘制以下树表:

因此,结果数组将转换为:

this.data = [
    {
        // COL1
        data:{
            label:"A"
        },
        children:[
            {
                // COL2
                data:{
                    label: "a"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "1",
                            clusters: [10,15]
                        }
                    }
                ]
            },
            {
                // COL2
                data:{
                    label: "c"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "1",
                            clusters: [30,35]
                        }
                    }
                ]
            }
        ]
    },
    {
        // COL1
        data:{
            label:"B"
        },
        children:[
            {
                // COL2
                data:{
                    label: "b"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "1",
                            clusters: [20,25]
                        }
                    }
                ]
            }
        ]
    },
    {
        // COL1
        data:{
            label:"C"
        },
        children:[
            {
                // COL2
                data:{
                    label: "d"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "1",
                            clusters: [40,45]
                        }
                    },
                    {
                        // COL3
                        data:{
                            label: "2",
                            clusters: [50,55]
                        }
                    }
                ]
            }
        ]
    },
    {
        // COL1
        data:{
            label:"D"
        },
        children:[
            {
                // COL2
                data:{
                    label: "e"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "3",
                            clusters: [60,65]
                        }
                    },
                    {
                        // COL3
                        data:{
                            label: "4",
                            clusters: [70,75]
                        }
                    }
                ]
            },
            {
                // COL2
                data:{
                    label: "f"
                },
                children:[
                    {
                        // COL3
                        data:{
                            label: "3",
                            clusters: [80,85]
                        }
                    }
                ]
            }
        ]
    }
];
我尝试了一些方法,比如对结果数组进行分组,只是对结果数组进行循环。。。但我没能解决这个问题,最终还是迷路了

你能帮我从结果数组创建数据数组吗

试试这个:

let data = [];
result.forEach((r, i) => {
  let d;
  for (let i = 1; i <= 3; i ++) {
    const l = r["col"+i];
    const rg = d ? (d.children || (d.children = [])) : data;
    d = rg.find(e => e.data.label === l) || (rg[rg.length] = { data: { label: l }});
  }
  d.data.clusters = r["col4"];
});
console.log(data);
let data=[];
结果.forEach((r,i)=>{
让d;
对于(设i=1;即data.label==l)| |(rg[rg.length]={data:{label:l});
}
d、 data.clusters=r[“col4”];
});
控制台日志(数据);
试试这个:

let data = [];
result.forEach((r, i) => {
  let d;
  for (let i = 1; i <= 3; i ++) {
    const l = r["col"+i];
    const rg = d ? (d.children || (d.children = [])) : data;
    d = rg.find(e => e.data.label === l) || (rg[rg.length] = { data: { label: l }});
  }
  d.data.clusters = r["col4"];
});
console.log(data);
let data=[];
结果.forEach((r,i)=>{
让d;
对于(设i=1;即data.label==l)| |(rg[rg.length]={data:{label:l});
}
d、 data.clusters=r[“col4”];
});
控制台日志(数据);