树形结构算法实现

要求 现在有这样的数据结构

var rootArr = [
    {
        "node_id": 1,       // 节点ID
        "parent_id": 0, // 本节点的父节点ID,0 表示没有父节点,即根节点
        "name": 'xxxx'
    },
    {
        "node_id": 5,
        "parent_id": 1,    // 本节点的父节点为 node_id = 1 的节点
        "name": 'xxxxx'
    },
    更多数据
];

需要得出像树形结构的数据

  • 实现算法
function treeData() {
    let cloneData = JSON.parse(JSON.stringify(rootArr));
    return cloneData.filter(father => {
        let branchArr = cloneData.filter(child=>father.node_id == child.parent_id);
        branchArr.length ? father.children = branchArr: '';
        return father.parent_id == 0;
    });
}
  • 结果


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 概率论与数理统计 无穷小阶数 无穷小量表述:线性逼近 相当于利用切线和斜率来理解误差和逼近。 泰勒级数:线性逼近 ...
    Babus阅读 823评论 0 1
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 5,994评论 0 13
  • 我无意冒犯世人的指责 偷偷地想你 我两颊绯红 只因人们说你也情感细腻 怕我没掩饰好 怕你揣度出我的心意 远山如黛 ...
    木桥椿阅读 719评论 12 8
  • 我喜欢在东北的夜晚吃烧烤,尤其是在冬天。不是因为东北的烧烤有多么好吃,而是这一种在东北蕴含多年的烧烤文化,让我一个...
    带你寻找北极星阅读 614评论 1 2