精华内容
下载资源
问答
  • 主要介绍了javascript将扁平的数据转为树形结构的高效率算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • id: 3, name: "南昌市" } ] 将扁平的数据转为树形结构的几种方法 function listToTree(list) { let map = {}; list.forEach(item => { if (! map[item.id]) { map[item.id] = item; } }); list.forEach(item => { if...

    扁平菜单示例如下:

    var menu_list = [{

    id: '1',

    menu_name: '设置',

    menu_url: 'setting',

    parent_id: 0

    }, {

    id: '1-1',

    menu_name: '权限设置',

    menu_url: 'setting.permission',

    parent_id: '1'

    }, {

    id: '1-1-1',

    menu_name: '用户管理列表',

    menu_url: 'setting.permission.user_list',

    parent_id: '1-1'

    }, {

    id: '1-1-2',

    menu_name: '用户管理新增',

    menu_url: 'setting.permission.user_add',

    parent_id: '1-1'

    }, {

    id: '1-1-3',

    menu_name: '角色管理列表',

    menu_url: 'setting.permission.role_list',

    parent_id: '1-1'

    }, {

    id: '1-1-4',

    menu_name: '角色管理新增',

    menu_url: 'setting.permission.role_add',

    parent_id: '1-1'

    }, {

    id: '1-2',

    menu_name: '菜单设置',

    menu_url: 'setting.menu',

    parent_id: '1'

    }, {

    id: '1-2-1',

    menu_name: '菜单列表',

    menu_url: 'setting.menu.menu_list',

    parent_id: '1-2'

    }, {

    id: '1-2-2',

    menu_name: '菜单添加',

    menu_url: 'setting.menu.menu_add',

    parent_id: '1-2'

    }, {

    id: '2',

    menu_name: '订单',

    menu_url: 'order',

    parent_id: 0

    }, {

    id: '2-1',

    menu_name: '报单审核',

    menu_url: 'order.orderreview',

    parent_id: '2'

    }, {

    id: '2-2',

    menu_name: '退款管理',

    menu_url: 'order.refundmanagement',

    parent_id: '2'

    }, {

    id: '2-3',

    menu_name: '实物订单',

    menu_url: 'order.realorder',

    parent_id: '2'

    }, {

    id: '2-1-1',

    menu_name: '全部报单',

    menu_url: 'order.orderreview.all',

    parent_id: '2-1'

    }, {

    id: '2-2-1',

    menu_name: '所有记录',

    menu_url: 'order.refundmanagement.all',

    parent_id: '2-2'

    }, {

    id: '2-2-2',

    menu_name: '待处理',

    menu_url: 'order.refundmanagement.wait',

    parent_id: '2-2'

    }, {

    id: '2-2-3',

    menu_name: '退款原因',

    menu_url: 'order.refundmanagement.result',

    parent_id: '2-2'

    }, {

    id: '2-3-1',

    menu_name: '实物订单管理',

    menu_url: 'order.realorder.list',

    parent_id: '2-3'

    }, {

    id: '3',

    menu_name: '商品',

    menu_url: 'commodity',

    parent_id: 0

    }, {

    id: '3-1',

    menu_name: '分类管理',

    menu_url: 'commodity.classifieldmanagement',

    parent_id: '3'

    }, {

    id: '3-1-1',

    menu_name: '管理',

    menu_url: 'commodity.classifieldmanagement.management',

    parent_id: '3-1'

    }, {

    id: '3-1-2',

    menu_name: '编辑或新增',

    menu_url: 'commodity.classifieldmanagement.edit',

    parent_id: '3-1'

    }, {

    id: '3-2',

    menu_name: '品牌管理',

    menu_url: 'commodity.brandmanagement',

    parent_id: '3'

    }, {

    id: '3-2-1',

    menu_name: '管理',

    menu_url: 'commodity.brandmanagement.management',

    parent_id: '3-2'

    }, {

    id: '3-2-2',

    menu_name: '编辑或新增',

    menu_url: 'commodity.brandmanagement.edit',

    parent_id: '3-2'

    }, {

    id: '3-3',

    menu_name: '商品管理',

    menu_url: 'commodity.commoditymanagement',

    parent_id: '3'

    }, {

    id: '3-3-1',

    menu_name: '管理',

    menu_url: 'commodity.commoditymanagement.management',

    parent_id: '3-3'

    }, {

    id: '3-3-2',

    menu_name: '编辑或新增',

    menu_url: 'commodity.commoditymanagement.edit',

    parent_id: '3-3'

    }, {

    id: '3-4',

    menu_name: '类型管理',

    menu_url: 'commodity.typeManagement',

    parent_id: '3'

    }, {

    id: '3-4-1',

    menu_name: '管理',

    menu_url: 'commodity.typeManagement.management',

    parent_id: '3-4'

    }, {

    id: '3-4-2',

    menu_name: '编辑或新增',

    menu_url: 'commodity.typeManagement.edit',

    parent_id: '3-4'

    }];

    1、 O(n)级算法

    function buildTree(list){

    let temp = {};

    let tree = {};

    for(let i in list){

    temp[list[i].id] = list[i];

    }

    for(let i in temp){

    if(temp[i].parent_id) {

    if(!temp[temp[i].parent_id].children) {

    temp[temp[i].parent_id].children = new Object();

    }

    temp[temp[i].parent_id].children[temp[i].id] = temp[i];

    } else {

    tree[temp[i].id] = temp[i];

    }

    }

    return tree;

    }

    2、let array = [

    {

    id: 1,

    parent_id: 0,

    name: "四川省"

    },

    {

    id: 2,

    parent_id: 0,

    name: "广东省"

    },

    {

    id: 3,

    parent_id: 0,

    name: "江西省"

    },

    {

    id: 5,

    parent_id: 1,

    name: "成都市"

    },

    {

    id: 6,

    parent_id: 5,

    name: "锦江区"

    },

    {

    id: 7,

    parent_id: 6,

    name: "九眼桥"

    },

    {

    id: 8,

    parent_id: 6,

    name: "兰桂坊"

    },

    {

    id: 9,

    parent_id: 2,

    name: "东莞市"

    },

    {

    id: 10,

    parent_id: 9,

    name: "长安镇"

    },

    {

    id: 11,

    parent_id: 3,

    name: "南昌市"

    }

    ]

    将扁平的数据转为树形结构的几种方法

    function listToTree(list) {

    let map = {};

    list.forEach(item => {

    if (! map[item.id]) {

    map[item.id] = item;

    }

    });

    list.forEach(item => {

    if (item.parent_id !== 0) {

    map[item.parent_id].children ? map[item.parent_id].children.push(item) :

    map[item.parent_id].children = [item];

    }

    });

    return list.filter(item => {

    if (item.parent_id === 0) {

    return item;

    }

    })

    }

    console.log(listToTree(array));

    思路:1、先将数组中的所有元素都复制到 map 中(注意:这里是引用复制哦,这个细节很重要)

    2、时候遍历 parent_id 不等于 0 的元素,根据当前item的id去和map对象中的引用id进行对比,如果一致就说明该对象就是他的children,然后判断了是否存在 children,如果不存在则直接给它赋值,否则将值 push 到 children 中。

    3、过滤parentid=0的数据

    展开全文
  • Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
  • 前端扁平数据转为树形结构数据树形结构数据转化 树形结构数据转化 背景:在做后台管理平台的时候,经常会有tree的应用,有时后端一个接口可能有多处使用,这时候就需要前端去处理数据.不多说,直接上代码 let jsonData =...

    前端扁平数据转为树形结构数据

    树形结构数据转化

    背景:在做后台管理平台的时候,经常会有tree的应用,有时后端一个接口可能有多处使用,这时候就需要前端去处理数据.不多说,直接上代码

       let jsonData = [
          { id: 1, parentId: 0, name: "一级菜单A" },
          { id: 2, parentId: 0, name: "一级菜单B" },
          { id: 3, parentId: 0, name: "一级菜单C" },
          { id: 4, parentId: 1, name: "二级菜单A-A" },
          { id: 5, parentId: 1, name: "二级菜单A-B" },
          { id: 6, parentId: 2, name: "二级菜单B-A" },
          { id: 7, parentId: 1, name: "三级菜单A-A-A" },
          { id: 8, parentId: 7, name: "四级菜单A-A-A-A" },
          { id: 9, parentId: 8, name: "五级菜单A-A-A-A-A" }
        ];
    
        let root = "0"; //根节点
        let parentKey = "parentId"; //节点字段名
        let key = "id";
        function formatTree(obj, root, parentKey, key) {
          const copyedObj = obj;
          return copyedObj.filter(parent => {
            let child = copyedObj.filter(item => {
              return parent[key] == item[parentKey];
            });
            if (child.length > 0) {
              parent.children = child;
            } else {
              parent.children = [];
            }
            return parent[parentKey] == 0; //返回顶层,依据实际情况判断这里的返回值
          });
        }
    

    输出结果

    [
        {
            "id":1,
            "parentId":0,
            "name":"一级菜单A",
            "children":[
                {
                    "id":4,
                    "parentId":1,
                    "name":"二级菜单A-A",
                    "children":[
    
                    ]
                },
                {
                    "id":5,
                    "parentId":1,
                    "name":"二级菜单A-B",
                    "children":[
    
                    ]
                },
                {
                    "id":7,
                    "parentId":1,
                    "name":"三级菜单A-A-A",
                    "children":[
                        {
                            "id":8,
                            "parentId":7,
                            "name":"四级菜单A-A-A-A",
                            "children":[
                                {
                                    "id":9,
                                    "parentId":8,
                                    "name":"五级菜单A-A-A-A-A",
                                    "children":[
    
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "id":2,
            "parentId":0,
            "name":"一级菜单B",
            "children":[
                {
                    "id":6,
                    "parentId":2,
                    "name":"二级菜单B-A",
                    "children":[
    
                    ]
                }
            ]
        },
        {
            "id":3,
            "parentId":0,
            "name":"一级菜单C",
            "children":[
    
            ]
        }
    ]
    
    展开全文
  • 当我们需要将一个一维数组转换成一个多层结构的时候,最简单但是最慢的就是多个for循环嵌套,但是这样做有一些缺点,那就是效率太低、而且有多少层就需要嵌套几个for循环,不好用。 我实现了用O(n)级算法将 一个扁平...

    当我们需要将一个一维数组转换成一个多层结构的时候,最简单但是最慢的就是多个for循环嵌套,但是这样做有一些缺点,那就是效率太低、而且有多少层就需要嵌套几个for循环,不好用。

    我实现了用O(n)级算法将 一个扁平的数组即一维数组代表的菜单结构转换成一个多层级的菜单结构。

    一位数组中每一个元素必须要包含以下属性:

    1. 拥有一个唯一的id
    2. 拥有一个parent_id, 这个id指向它父级的id

    其他则为每一个元素中的一些信息,我这里是菜单,就有菜单的名称和url信息。

    注:

    在层级结构中,第一层的parent_id需要为0.
    扁平数组例:

    var menu_list = [{
          id: '1',
          menu_name: '设置',
          menu_url: 'setting',
          parent_id: 0
        }, {
          id: '1-1',
          menu_name: '权限设置',
          menu_url: 'setting.permission',
          parent_id: '1'
        }, {
          id: '1-1-1',
          menu_name: '用户管理列表',
          menu_url: 'setting.permission.user_list',
          parent_id: '1-1'
        }, {
          id: '1-1-2',
          menu_name: '用户管理新增',
          menu_url: 'setting.permission.user_add',
          parent_id: '1-1'
        }, {
          id: '1-1-3',
          menu_name: '角色管理列表',
          menu_url: 'setting.permission.role_list',
          parent_id: '1-1'
        }, {
          id: '1-2',
          menu_name: '菜单设置',
          menu_url: 'setting.menu',
          parent_id: '1'
        }, {
          id: '1-2-1',
          menu_name: '菜单列表',
          menu_url: 'setting.menu.menu_list',
          parent_id: '1-2'
        }, {
          id: '1-2-2',
          menu_name: '菜单添加',
          menu_url: 'setting.menu.menu_add',
          parent_id: '1-2'
        }, {
          id: '2',
          menu_name: '订单',
          menu_url: 'order',
          parent_id: 0
        }, {
          id: '2-1',
          menu_name: '报单审核',
          menu_url: 'order.orderreview',
          parent_id: '2'
        }, {
          id: '2-2',
          menu_name: '退款管理',
          menu_url: 'order.refundmanagement',
          parent_id: '2'
        }
    ]
    

    实现算法buildTree

    算法思想:

    1. 先将数组中的每一个节点放到temp对象中(创建set)
      即数组中有{id: ‘2-3’, parent_id: ‘2’,…}这样一个节点,需要将他放到temp中变成 ‘2-3’: {id: ‘2-3’, parent_id: ‘2’,…}这种JSON结构
    2. 直接遍历整个temp对象,通过这句代码 temp[temp[i].parent_id].children[temp[i].id] = temp[i]; 将当前子节点与父节点建立连接。是因为我们保证了父节点一定在子节点前,那么当子节点出现的时候就直接可以用temp[temp[i].parent_id]来查找到父节点这个时候先父节点的children对象中添加一个引用即可。
    /**
     * 将一维的扁平数组转换为多层级对象
     * @param  {[type]} list 一维数组,数组中每一个元素需包含id和parent_id两个属性 
     * @return {[type]} tree 多层级树状结构
     */
    function buildTree(list){
    	let temp = {};
    	let tree = {};
    	for(let i in list){
    		temp[list[i].id] = list[i];
    	}
    	for(let i in temp){
    		if(temp[i].parent_id) {
    			if(!temp[temp[i].parent_id].children) {
    				temp[temp[i].parent_id].children = new Object();
    			}
    			temp[temp[i].parent_id].children[temp[i].id] = temp[i];
    		} else {
    			tree[temp[i].id] =  temp[i];
    		}
    	}
    	return tree;
    }
    

    测试结果:

    可以看到函数成功地构建了多级的树状结构
    在这里插入图片描述以下是测试数据,用时只需5毫秒左右:

     
    var menu_list = [{
          id: '1',
          menu_name: '设置',
          menu_url: 'setting',
          parent_id: 0
        }, {
          id: '1-1',
          menu_name: '权限设置',
          menu_url: 'setting.permission',
          parent_id: '1'
        }, {
          id: '1-1-1',
          menu_name: '用户管理列表',
          menu_url: 'setting.permission.user_list',
          parent_id: '1-1'
        }, {
          id: '1-1-2',
          menu_name: '用户管理新增',
          menu_url: 'setting.permission.user_add',
          parent_id: '1-1'
        }, {
          id: '1-1-3',
          menu_name: '角色管理列表',
          menu_url: 'setting.permission.role_list',
          parent_id: '1-1'
        }, {
          id: '1-1-4',
          menu_name: '角色管理新增',
          menu_url: 'setting.permission.role_add',
          parent_id: '1-1'
        }, {
          id: '1-2',
          menu_name: '菜单设置',
          menu_url: 'setting.menu',
          parent_id: '1'
        }, {
          id: '1-2-1',
          menu_name: '菜单列表',
          menu_url: 'setting.menu.menu_list',
          parent_id: '1-2'
        }, {
          id: '1-2-2',
          menu_name: '菜单添加',
          menu_url: 'setting.menu.menu_add',
          parent_id: '1-2'
        }, {
          id: '2',
          menu_name: '订单',
          menu_url: 'order',
          parent_id: 0
        }, {
          id: '2-1',
          menu_name: '报单审核',
          menu_url: 'order.orderreview',
          parent_id: '2'
        }, {
          id: '2-2',
          menu_name: '退款管理',
          menu_url: 'order.refundmanagement',
          parent_id: '2'
        }, {
          id: '2-3',
          menu_name: '实物订单',
          menu_url: 'order.realorder',
          parent_id: '2'
        }, {
          id: '2-1-1',
          menu_name: '全部报单',
          menu_url: 'order.orderreview.all',
          parent_id: '2-1'
        }, {
          id: '2-2-1',
          menu_name: '所有记录',
          menu_url: 'order.refundmanagement.all',
          parent_id: '2-2'
        }, {
          id: '2-2-2',
          menu_name: '待处理',
          menu_url: 'order.refundmanagement.wait',
          parent_id: '2-2'
        }, {
          id: '2-2-3',
          menu_name: '退款原因',
          menu_url: 'order.refundmanagement.result',
          parent_id: '2-2'
        }, {
          id: '2-3-1',
          menu_name: '实物订单管理',
          menu_url: 'order.realorder.list',
          parent_id: '2-3'
        }, {
          id: '3',
          menu_name: '商品',
          menu_url: 'commodity',
          parent_id: 0
        }, {
          id: '3-1',
          menu_name: '分类管理',
          menu_url: 'commodity.classifieldmanagement',
          parent_id: '3'
        }, {
          id: '3-1-1',
          menu_name: '管理',
          menu_url: 'commodity.classifieldmanagement.management',
          parent_id: '3-1'
        }, {
          id: '3-1-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.classifieldmanagement.edit',
          parent_id: '3-1'
        }, {
          id: '3-2',
          menu_name: '品牌管理',
          menu_url: 'commodity.brandmanagement',
          parent_id: '3'
        }, {
          id: '3-2-1',
          menu_name: '管理',
          menu_url: 'commodity.brandmanagement.management',
          parent_id: '3-2'
        }, {
          id: '3-2-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.brandmanagement.edit',
          parent_id: '3-2'
        }, {
          id: '3-3',
          menu_name: '商品管理',
          menu_url: 'commodity.commoditymanagement',
          parent_id: '3'
        }, {
          id: '3-3-1',
          menu_name: '管理',
          menu_url: 'commodity.commoditymanagement.management',
          parent_id: '3-3'
        }, {
          id: '3-3-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.commoditymanagement.edit',
          parent_id: '3-3'
        }, {
          id: '3-4',
          menu_name: '类型管理',
          menu_url: 'commodity.typeManagement',
          parent_id: '3'
        }, {
          id: '3-4-1',
          menu_name: '管理',
          menu_url: 'commodity.typeManagement.management',
          parent_id: '3-4'
        }, {
          id: '3-4-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.typeManagement.edit',
          parent_id: '3-4'
        }];
    
    

    原文:https://blog.csdn.net/qq_37746973/article/details/78664079

    展开全文
  • javascript将扁平的数据转为树形结构(高效率)

    万次阅读 多人点赞 2017-11-29 10:16:44
    当我们需要将一个一维数组转换成一个多层结构的时候,最简单但是最慢的就是多个for循环嵌套,但是这样做有一些缺点,那就是效率太低、而且有多少层就需要嵌套几个for循环,不好用。 我实现了用O(n)级算法将 一个...

    当我们需要将一个一维数组转换成一个多层结构的时候,最简单但是最慢的就是多个for循环嵌套,但是这样做有一些缺点,那就是效率太低、而且有多少层就需要嵌套几个for循环,不好用。

    我实现了用O(n)级算法将 一个扁平的数组即一维数组代表的菜单结构转换成一个多层级的菜单结构。

    一位数组中每一个元素必须要包含以下属性:

    1. 拥有一个唯一的id
    2. 拥有一个parent_id, 这个id指向它父级的id

    其他则为每一个元素中的一些信息,我这里是菜单,就有菜单的名称和url信息。

    注:

    1. 在层级结构中,第一层的parent_id需要为0.
    2. 父节点在数组中的位置需要在子节点前,即 节点3必须排在节点3-2之前

    扁平数组例:

    var menu_list = [{
          id: '1',
          menu_name: '设置',
          menu_url: 'setting',
          parent_id: 0
        }, {
          id: '1-1',
          menu_name: '权限设置',
          menu_url: 'setting.permission',
          parent_id: '1'
        }, {
          id: '1-1-1',
          menu_name: '用户管理列表',
          menu_url: 'setting.permission.user_list',
          parent_id: '1-1'
        }, {
          id: '1-1-2',
          menu_name: '用户管理新增',
          menu_url: 'setting.permission.user_add',
          parent_id: '1-1'
        }, {
          id: '1-1-3',
          menu_name: '角色管理列表',
          menu_url: 'setting.permission.role_list',
          parent_id: '1-1'
        }, {
          id: '1-2',
          menu_name: '菜单设置',
          menu_url: 'setting.menu',
          parent_id: '1'
        }, {
          id: '1-2-1',
          menu_name: '菜单列表',
          menu_url: 'setting.menu.menu_list',
          parent_id: '1-2'
        }, {
          id: '1-2-2',
          menu_name: '菜单添加',
          menu_url: 'setting.menu.menu_add',
          parent_id: '1-2'
        }, {
          id: '2',
          menu_name: '订单',
          menu_url: 'order',
          parent_id: 0
        }, {
          id: '2-1',
          menu_name: '报单审核',
          menu_url: 'order.orderreview',
          parent_id: '2'
        }, {
          id: '2-2',
          menu_name: '退款管理',
          menu_url: 'order.refundmanagement',
          parent_id: '2'
        }
    ]

    实现算法buildTree

    算法思想:

    1. 先将数组中的每一个节点放到temp对象中(创建set)
      即数组中有{id: '2-3', parent_id: '2',...}这样一个节点,需要将他放到temp中变成 '2-3': {id: '2-3', parent_id: '2',...}这种JSON结构
    2. 直接遍历整个temp对象,通过这句代码   temp[temp[i].parent_id].children[temp[i].id] = temp[i];   将当前子节点与父节点建立连接。是因为我们保证了父节点一定在子节点前,那么当子节点出现的时候就直接可以用temp[temp[i].parent_id]来查找到父节点这个时候先父节点的children对象中添加一个引用即可。
    /**
     * 将一维的扁平数组转换为多层级对象
     * @param  {[type]} list 一维数组,数组中每一个元素需包含id和parent_id两个属性 
     * @return {[type]} tree 多层级树状结构
     */
    function buildTree(list){
    	let temp = {};
    	let tree = {};
    	for(let i in list){
    		temp[list[i].id] = list[i];
    	}
    	for(let i in temp){
    		if(temp[i].parent_id) {
    			if(!temp[temp[i].parent_id].children) {
    				temp[temp[i].parent_id].children = new Object();
    			}
    			temp[temp[i].parent_id].children[temp[i].id] = temp[i];
    		} else {
    			tree[temp[i].id] =  temp[i];
    		}
    	}
    	return tree;
    }

    测试结果:

    可以看到函数成功地构建了多级的树状结构

     

    这个算法的效率是极高的,比多重for循环来的好得多。

     

     

     

     

    以下是测试数据,用时只需5毫秒左右:

    
    var menu_list = [{
          id: '1',
          menu_name: '设置',
          menu_url: 'setting',
          parent_id: 0
        }, {
          id: '1-1',
          menu_name: '权限设置',
          menu_url: 'setting.permission',
          parent_id: '1'
        }, {
          id: '1-1-1',
          menu_name: '用户管理列表',
          menu_url: 'setting.permission.user_list',
          parent_id: '1-1'
        }, {
          id: '1-1-2',
          menu_name: '用户管理新增',
          menu_url: 'setting.permission.user_add',
          parent_id: '1-1'
        }, {
          id: '1-1-3',
          menu_name: '角色管理列表',
          menu_url: 'setting.permission.role_list',
          parent_id: '1-1'
        }, {
          id: '1-1-4',
          menu_name: '角色管理新增',
          menu_url: 'setting.permission.role_add',
          parent_id: '1-1'
        }, {
          id: '1-2',
          menu_name: '菜单设置',
          menu_url: 'setting.menu',
          parent_id: '1'
        }, {
          id: '1-2-1',
          menu_name: '菜单列表',
          menu_url: 'setting.menu.menu_list',
          parent_id: '1-2'
        }, {
          id: '1-2-2',
          menu_name: '菜单添加',
          menu_url: 'setting.menu.menu_add',
          parent_id: '1-2'
        }, {
          id: '2',
          menu_name: '订单',
          menu_url: 'order',
          parent_id: 0
        }, {
          id: '2-1',
          menu_name: '报单审核',
          menu_url: 'order.orderreview',
          parent_id: '2'
        }, {
          id: '2-2',
          menu_name: '退款管理',
          menu_url: 'order.refundmanagement',
          parent_id: '2'
        }, {
          id: '2-3',
          menu_name: '实物订单',
          menu_url: 'order.realorder',
          parent_id: '2'
        }, {
          id: '2-1-1',
          menu_name: '全部报单',
          menu_url: 'order.orderreview.all',
          parent_id: '2-1'
        }, {
          id: '2-2-1',
          menu_name: '所有记录',
          menu_url: 'order.refundmanagement.all',
          parent_id: '2-2'
        }, {
          id: '2-2-2',
          menu_name: '待处理',
          menu_url: 'order.refundmanagement.wait',
          parent_id: '2-2'
        }, {
          id: '2-2-3',
          menu_name: '退款原因',
          menu_url: 'order.refundmanagement.result',
          parent_id: '2-2'
        }, {
          id: '2-3-1',
          menu_name: '实物订单管理',
          menu_url: 'order.realorder.list',
          parent_id: '2-3'
        }, {
          id: '3',
          menu_name: '商品',
          menu_url: 'commodity',
          parent_id: 0
        }, {
          id: '3-1',
          menu_name: '分类管理',
          menu_url: 'commodity.classifieldmanagement',
          parent_id: '3'
        }, {
          id: '3-1-1',
          menu_name: '管理',
          menu_url: 'commodity.classifieldmanagement.management',
          parent_id: '3-1'
        }, {
          id: '3-1-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.classifieldmanagement.edit',
          parent_id: '3-1'
        }, {
          id: '3-2',
          menu_name: '品牌管理',
          menu_url: 'commodity.brandmanagement',
          parent_id: '3'
        }, {
          id: '3-2-1',
          menu_name: '管理',
          menu_url: 'commodity.brandmanagement.management',
          parent_id: '3-2'
        }, {
          id: '3-2-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.brandmanagement.edit',
          parent_id: '3-2'
        }, {
          id: '3-3',
          menu_name: '商品管理',
          menu_url: 'commodity.commoditymanagement',
          parent_id: '3'
        }, {
          id: '3-3-1',
          menu_name: '管理',
          menu_url: 'commodity.commoditymanagement.management',
          parent_id: '3-3'
        }, {
          id: '3-3-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.commoditymanagement.edit',
          parent_id: '3-3'
        }, {
          id: '3-4',
          menu_name: '类型管理',
          menu_url: 'commodity.typeManagement',
          parent_id: '3'
        }, {
          id: '3-4-1',
          menu_name: '管理',
          menu_url: 'commodity.typeManagement.management',
          parent_id: '3-4'
        }, {
          id: '3-4-2',
          menu_name: '编辑或新增',
          menu_url: 'commodity.typeManagement.edit',
          parent_id: '3-4'
        }];

    这是我一个大二学生想出来的,挺开心的,因为当时看到老师用的3个for循环嵌套。嘿嘿嘿 

    展开全文
  • 首先给你一个数组list如下: var arr = [ { name: '权限管理', id: 1, parentId: 0 }, { name: '角色管理', id: 1000, parentId: 1 }, { name: '菜单管理', id: 1100, parentId: 1 }, ...转成树形结构以后输出
  • 一、数据库父子结构数据设计  大部分采用 parentId的形式来存储父id,并且只存储父id,祖父Id不存储。也可以添加存储层级级别或者层级关系等字段。 CREATE TABLE `t_resource` ( `id` varchar(255) NOT NULL ...
  • function translateDataToTree(data, config) { const { pId = 'pId', id = 'id', children = 'children' } = config let parents = data.filter(v => [undefined, null, 'undefined', 0].includes(v[pId])) ...
  • JavaScript Array、Object、数组树形结构转换、对象等数据转换及处理总结 JS 对象转数组 Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序...
  • js将数据转成树形结构

    千次阅读 2020-08-11 12:37:38
    有如下数据,数组中为一条条单个数据,每条数据都有唯一的ID标识,pid表示此条数据的父级 ID,根据pid和id的对应关系,实现一个函数将数据转成树形结构数据。 var data = [ {'id':101,'name':'语文','pid': -1}, ...
  • //树形节点id private String cId; //树形节点名称 private String cName; //标签创建人 private String cCreator; //团队id private String cTeamId; //标签颜色 private Byte nColour; //是否是父级标签 private ...
  • 在日常开发工作中,我们经常碰到将线性的数据转换成树的需求,今天给大家分享一个...数据结构 下面是我们转换前的数据: [ { "id":1, "parent_id":0, "name":"四川省" }, { "id":2, "parent_id":0, "name":...
  • js数组转为树形结构 树形结构数据扁平化
  • js代码-数组根据pid转为树形结构的数组
  • 二维数据树形结构

    2020-11-20 14:27:21
    最近做一个后台管理项目,前端需要多级分类展示,需要把二维的配置数据转换成树形结构。 1、模型定义 @Data public class Options{ private String value; private String label; private List<Options>...
  • 比如: 树形结构数据 将数组数据转化成树形结构 // 独立封装树形数据转换方法 export function listToTreeData(list, pid) { // 1.遍历列表的所有元素 list.forEach(item => { // 2.顶级部门不管,只找属于...
  • 如何将扁平化的数组转成树形结构,比如:const a = [[1,2,3],['a','b','c'],['A','B','C']];要求a数组转化后结果,如:[{label: '1',children:[{ label: 'a',children:[{label:'A'}]}]},{label: '2',children:[{ ...
  • ``` //实体类中需要包含唯一id,pid和名称 此处不贴实体类 List<HrmDepartment>... //将department设置为部门 if (!h1.isEmpty()) { for ( HrmDepartment p : h1 ) { // 子节点 ...
  • 现有一份平铺的部门数据,由对象中的parentId 绑定为父部门的id,需要得到一份层级数据 目标–>不使用递归组装 json数据示例 原数据: [ { "id": 1, "parentId": 0, "departmentName": "一级部门1", ...
  • 1.树形实体类 @Data public class SuperTree { protected String id; protected String pid; protected List<? super SuperTree> children = new ArrayList<>(); } 2.工具类 public static <V ...
  • JavaScript将数组转为树形结构

    千次阅读 2021-05-20 11:23:20
    将数组转为树形结构JavaScript 1.原始代码 import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context 2.修正...
  • 有时候从后台传给前端的是扁平化的数据,但是前端为了生成树状结构数据,需要进行一下转换,下面就是一个将扁平化解构转换成树状结构 /** * @description 将扁平化数据 转换成 树状结构 * @param {Array} ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,457
精华内容 3,782
关键字:

数据转为树形结构