美文网首页
通过递归生成树形结构数据

通过递归生成树形结构数据

作者: nzjcnjzx | 来源:发表于2022-03-30 14:58 被阅读0次

如下数据:

[
    {
        "id": 1,
        "name": "11111111楼",
        "parentId": 0
    },
    {
        "id": 2,
        "name": "2楼",
        "parentId": 0
    },
    {
        "id": 4,
        "name": "1楼儿子2",
        "parentId": 1
    },
    {
        "id": 6,
        "name": "你是谁啊",
        "parentId": 4
    },
    {
        "id": 12,
        "name": "566666",
        "parentId": 2
    },
    {
        "id": 13,
        "name": "33333楼",
        "parentId": 0
    },
    {
        "id": 14,
        "name": "7567566765",
        "parentId": 13
    },
    {
        "id": 15,
        "name": "1312",
        "parentId": 6
    }
]

生成树结构代码:

 load() {
                loadCatOptions().then(res => {//发送请求获取数据
                    this.catOptions = this.generateOptions(res);
                    console.log(this.catOptions);
                })
            },
 
            generateOptions(params) {//生成Cascader级联数据
                var result = [];
                for (let param of params) {
                    if (param.parentId == 0) {//判断是否为顶层节点
                        var parent = {//转换成el-Cascader可以识别的数据结构
                            'label': param.name,
                            'value': param.id
                        }
                        parent.children = this.getchilds(param.id, params);//获取子节点
                        result.push(parent);
                    }
                }
                return result;
            },
 
            getchilds(id, array) {
                let childs = new Array();
                for (let arr of array) {//循环获取子节点
                    if (arr.parentId == id) {
                        childs.push({
                            'label': arr.name,
                            'value': arr.id
                        });
                    }
                }
                for (let child of childs) {//获取子节点的子节点
                    let childscopy = this.getchilds(child.value, array);//递归获取子节点
                    console.log(childscopy)
                    if (childscopy.length > 0) {
                        child.children = childscopy;
                    }
                }
                return childs;
            },

转换后的数据:

[
    {
        "children": [
            {
                "children": [
                    {
                        "children": [
                            {
                                "label": "1312",
                                "value": 15
                            }
                        ],
                        "label": "你是谁啊",
                        "value": 6
                    }
                ],
                "label": "1楼儿子2",
                "value": 4
            }
        ],
        "label": "11111111楼",
        "value": 1
    },
    {
        "children": [
            {
                "label": "566666",
                "value": 12
            }
        ],
        "label": "2楼",
        "value": 2
    },
    {
        "children": [
            {
                "label": "7567566765",
                "value": 14
            }
        ],
        "label": "33333楼",
        "value": 13
    }
]

根据树形数据生成树形文档

function g(count, title) {
  return (
    Array(count - 1)
      .fill("----")
      .join("") + title
  );
}
let txt = "";
function loop(menus, count) {
  count++;
  for (const item of menus) {
    item.count = count;
    txt += g(item.count, item.title) + '----' + item.key + "\n";
    loop(item.children || [], item.count);
  }
}
loop(menu, 0);

fs.writeFileSync("./1.txt", txt);

相关文章

  • 树形组件拖拽写法思路

    树形结构的生成,可以通过递归树形数据遍历而成 节点的思路 children-container 需要加个paddi...

  • 通过递归生成树形结构数据

    如下数据: 生成树结构代码: 转换后的数据: 根据树形数据生成树形文档

  • 【转载】JavaScript递归方法 生成 json tree

    原文:JavaScript递归方法 生成 json tree 树形结构数据[https://www.cnblogs...

  • django 实现树形结构两种方式

    树形结构类似于数据结构中的二叉树,如果树形结构比较复杂的话,通过递归的方式查询并不是那么简介,多次 访问数据库查询...

  • 递归

    简单递归(阶乘) 递归遍历对象 递归构造树(对于element-ui中的树形结构数据很有用) 定义 程序调用自身的...

  • 组合模式

    什么是组合模式 将对象通过容器以树形结构的方式进行递归组合 示例图 示例场景 以树形结构的方式将电影分成动作类 爱...

  • java 递归处理树形结构数据

    在实战开发中经常有需要处理树形菜单、树形目录等等等业务需求。而对于这种产品,在设计数据库时也建议使用id<----...

  • java 递归处理树形结构数据

    在实战开发中经常有需要处理树形菜单、树形目录等等等业务需求。而对于这种产品,在设计数据库时也建议使用id<----...

  • 组织架构图插件orgchart 异步加载

    说明 (1)通过后台查询数据库,生成树形数组结构,返回到前台。 (2)需要引入的js插件和css文件: ①jque...

  • Python那些相见恨晚的语法

    1.列表推导式 2.切片 3.生成器(斐波拉契数列) 4.递归(递归虽然运行效率比较低,但在对一些树形结构进行运算...

网友评论

      本文标题:通过递归生成树形结构数据

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