关于javascript:JS-数组转为树形结构根据id分梯次排序

要害代码:

let data = [{ id: 1, pid: 0, name: 'body' }, 
            { id: 2, pid: 1, name: 'title' }, 
            { id: 3, pid: 1, name: 'div' }, 
            { id: 4, pid: 3, name: 'span' }, 
            { id: 5, pid: 3, name: 'icon' }, 
            { id: 6, pid: 4, name: 'subspan'}]

function toTree(data) {
    let result = []
    if(!Array.isArray(data)) {
        return result
    }
    data.forEach(item => {
        delete item.children;
    });
    let map = {};
    data.forEach(item => {
        map[item.id] = item;
    });
    data.forEach(item => {
        let parent = map[item.pid];
        if(parent) {
            (parent.children || (parent.children = [])).push(item);
        } else {
            result.push(item);
        }
    });
    return result;
}

let array = toTree(data);

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理