将数组转换成树形结构的数据

103 阅读1分钟
const arrs = [
    {name: 'a', val: 1, parent: 0},
    {name: 'a1', val: 2, parent: 1},
    {name: 'a2', val: 3, parent: 1},
    {name: 'a3', val: 4, parent: 2},
    {name: 'a4', val: 5, parent: 2},
    {name: 'a5', val: 6, parent: 3},
    {name: 'a6', val: 7, parent: 3},
    {name: 'a7', val: 8, parent: 4},
    {name: 'a8', val: 9, parent: 7},
    {name: 'a9', val: 10, parent: 9},
];

function parseArrayToObj(arr) {
    const obj = {};
    let rootVal = null;
    arr.forEach(item => {
        obj[item.val] = item;
        if(item.parent === 0) {
            rootVal = item.val;
        }
    });
    arr.forEach(item => {
        if(item.parent) {
            obj[item.parent].children ? obj[item.parent].children.push(item) : obj[item.parent].children = [item];
        }
    });
    return obj[rootVal];
}

parseArrayToObj(arrs);