• vue js数组对象转树形结构


    1.数组数据

    const list=[
    	{id: 1,pid: 0,name: 'body' },
    	 {id: 2,pid: 1,name: 'title'}, 
     	{id: 3,pid: 2,name: 'div'}
     ];
    

    2.转成树结构这种

    const list = [{
            id: 1,
            pid: 0,
            name: 'body',
            children: [{
                id: 2,
                pid: 1,
                name: 'title',
                children: [{
                    id: 3,
                    pid: 1,
                    name: 'div'
                }]
            }]
        }]
    

    第一种

    function toTree(data) {
        // 空数组
        let result = [];
        // 判断不是数组  直接返回
        if (!Array.isArray(data)) {
            return result
        }
        // 遍历  删除  children 属性  做初始化操作
        data.forEach(item => {
            delete item.children;
        });
        //  空对象
        let map = {};
        data.forEach(item => {
            map[item.id] = item;
        });
    
        /**
         * map对象的 键: 是每个id  值:对应的item
         * 1: {id: 1, pid: 0, name: "body"}
         * 2: {id: 2, pid: 1, name: "title"}
         * 3: {id: 3, pid: 2, name: "div"}
         */
        data.forEach(item => {
            // item.pid 为0时 返回underfined
            let parent = map[item.pid];
            if (parent) {
                (parent.children || (parent.children = [])).push(item);
            } else {
                // 这里push的item是pid为0的数据
                result.push(item);
            }
        });
        return result;
    }
    
    console.log(toTree(data))
    

    第二种转为都在一个节点下的树

    for(let index = 0; index

    希望能帮助到大家!!!

  • 相关阅读:
    C 、C++ 、Java、Python、JavaScript数据类型对比介绍
    Git 02: git管理码云代码仓库 + IDEA集成使用git
    JavaSE——方法、递归
    Kotlin基础数据类型和运算符
    AST反混淆实战|某国外混淆框架一小段混淆js还原分析
    idea2021 创建Servlet模板 & idea2021如何修改Servlet模板
    Springboot ruoyi配置mysql备份定时任务
    中科大遭钓鱼邮件攻击了?3500名师生中招
    [附源码]java毕业设计基于web的健康信息管理系统
    LeetCode 每日一题 2748. 美丽下标对的数目
  • 原文地址:https://blog.csdn.net/weixin_53587375/article/details/127069919