美文网首页
javascript 平行结构转换成树

javascript 平行结构转换成树

作者: aaagu1234 | 来源:发表于2020-10-15 19:42 被阅读0次
  1. 递归实现
    function getTrees(list, parentId) {
        let items = {};
        for (let i = 0; i < list.length; i++) { 
            let key = list[i].pid;
            (items[key] || (items[key] = [])).push(list[i]);
        }
        return formatTree(items, parentId);
    }
    function formatTree(items, parentId) {
        let tree = [];
        if (!items[parentId]) {
            return tree;
        }
        for (let item of items[parentId]) {
            item.children = formatTree(items, item.id)
            tree.push(item);
        }
        return tree;
    }
  1. 非递归实现
    function formatTree(list) {
    let obj = {}, trees = [];
    list.forEach(item => {
        obj[item.id] = item;
    })
    list.forEach(item => {
        let parent = obj[item.pid];
        if (parent) (parent.children || (parent.children = [])).push(item);
        else trees.push(item) 
    })
    return trees;
}

https://segmentfault.com/a/1190000022261981

相关文章

网友评论

      本文标题:javascript 平行结构转换成树

      本文链接:https://www.haomeiwen.com/subject/kliopktx.html