• 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

    希望能帮助到大家!!!

  • 相关阅读:
    CSS 滚动捕获 scroll-snap-type
    OneFlow源码解析:Tensor类型体系与Local Tensor
    ui设计师简历自我评价的范文(合集)
    674. 最长连续递增序列
    自定义mvc增删改查
    [山东科技大学OJ]1107 Problem A: 编写函数:Swap (I) (Append Code)
    测试开发怎么学?
    无痕 PS、读得懂文字,OpenAI 的二代 DALL·E 惊艳亮相
    Mysql 学习总结(89)—— Mysql 库表容量统计
    4.Mask R-CNN/YOLOV8/RTMDET三种实例分割方法推理逻辑对比
  • 原文地址:https://blog.csdn.net/weixin_53587375/article/details/127069919