• 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

    希望能帮助到大家!!!

  • 相关阅读:
    示例:【新学期、新Flag】与CSDN的故事
    webpack原理篇(五十八):实战开发一个简易的webpack
    程序设计一_实训4_循环语句训练
    CompletableFuture异步执行用法详解
    Django 联表查询操作
    极客大赛的碎碎念
    DAOS整体设计分析 (一)
    数据库之MVCC
    2021年认证杯SPSSPRO杯数学建模C题(第一阶段)破局共享汽车求解全过程文档及程序
    【Django开发】0到1开发美多shop项目:短信验证码和RabbitMQ。全md文档笔记(附代码 文档)
  • 原文地址:https://blog.csdn.net/weixin_53587375/article/details/127069919