首页 > 编程语言 > 详细

javascripot扁平数组转树形数组,并按指定字段排序。

时间:2020-11-28 09:33:27      阅读:44      评论:0      收藏:0      [点我收藏+]
扁平数据的数据结构
[{
	"menuId": 108,
	"menuName": "系统管理",
	"parentMenuId": 0,
	"menuCode": "/",
	"menuUrl": "#",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 1,
	"isPower": true
}, {
	"menuId": 99,
	"menuName": "园林管理",
	"parentMenuId": 0,
	"menuCode": "/",
	"menuUrl": "#",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 0,
	"isPower": true
}, {
	"menuId": 100,
	"menuName": "园林首页",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 1,
	"isPower": true
}, {
	"menuId": 101,
	"menuName": "视频监控",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/video",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 2,
	"isPower": true
}, {
	"menuId": 102,
	"menuName": "调试",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/debug",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 3,
	"isPower": true
}, {
	"menuId": 103,
	"menuName": "区域",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/area",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 4,
	"isPower": true
}, {
	"menuId": 104,
	"menuName": "硬件",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/hardware",
	"iconUrl": null,
	"path": null,
	"depth": 3,
	"sortNum": 5,
	"isPower": true
}, {
	"menuId": 105,
	"menuName": "大屏参数设置",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/fullscreensetting",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 6,

	"isPower": true
}, {
	"menuId": 106,
	"menuName": "设备安装",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/install",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 7,

	"isPower": true
}, {
	"menuId": 110,
	"menuName": "预警消息",
	"parentMenuId": 99,
	"menuCode": "/",
	"menuUrl": "/admin/garden/alert/detail/",
	"iconUrl": null,
	"path": null,
	"depth": 1,
	"sortNum": 7,

	"isPower": true
}, {
	"menuId": 109,
	"menuName": "园林管理",
	"parentMenuId": 108,
	"menuCode": "/",
	"menuUrl": "/admin/system/gardens/",
	"iconUrl": null,
	"path": null,
	"depth": 3,
	"sortNum": 1,

	"isPower": true
}, {
	"menuId": 111,
	"menuName": "帐号管理",
	"parentMenuId": 108,
	"menuCode": "/",
	"menuUrl": "/admin/system/account",
	"iconUrl": null,
	"path": null,
	"depth": 3,
	"sortNum": 2,

	"isPower": true
}, {
	"menuId": 112,
	"menuName": "企业管理",
	"parentMenuId": 108,
	"menuCode": "/",
	"menuUrl": "/admin/system/enterprise",
	"iconUrl": null,
	"path": null,
	"depth": 3,
	"sortNum": 3,

	"isPower": true
}]

  转换函数:

     /**
        * @description: 生成树形菜单所需数据,无限级
        * @param parentMenuId:父ID
        * @author  邹中兴
        * @创建日期  2020/07/01
        * @return: 无
        */
        generateTreeData(menus, parentMenuId) {
            // console.log(menus)
            let itemArr = [];
            for (let i = 0; i < menus.length; i++) {
                let menu = menus[i];
                let node = null;
                if (menu.parentMenuId == parentMenuId) {
                    node = {
                        menuId: menu.menuId,
                        label: menu.menuName,
                        menuUrl: menu.menuUrl,
                        parentMenuId: menu.parentMenuId,
                        sortNum: menu.sortNum
                    }
                    node.children = this.generateTreeData(menus, menu.menuId);
                    itemArr.push(node);
                }
            }
            itemArr = itemArr.sort((a, b) => {
                return a.sortNum - b.sortNum;
            })
            return itemArr;
        },

  生成结果

[{
	"menuId": 99,
	"label": "园林管理",
	"menuUrl": "#",
	"parentMenuId": 0,
	"sortNum": 0,
	"children": [{
		"menuId": 100,
		"label": "园林首页",
		"menuUrl": "/",
		"parentMenuId": 99,
		"sortNum": 1,
		"children": []
	}, {
		"menuId": 101,
		"label": "视频监控",
		"menuUrl": "/admin/garden/video",
		"parentMenuId": 99,
		"sortNum": 2,
		"children": []
	}, {
		"menuId": 102,
		"label": "调试",
		"menuUrl": "/admin/garden/debug",
		"parentMenuId": 99,
		"sortNum": 3,
		"children": []
	}, {
		"menuId": 103,
		"label": "区域",
		"menuUrl": "/admin/garden/area",
		"parentMenuId": 99,
		"sortNum": 4,
		"children": []
	}, {
		"menuId": 104,
		"label": "硬件",
		"menuUrl": "/admin/garden/hardware",
		"parentMenuId": 99,
		"sortNum": 5,
		"children": []
	}, {
		"menuId": 105,
		"label": "大屏参数设置",
		"menuUrl": "/admin/garden/fullscreensetting",
		"parentMenuId": 99,
		"sortNum": 6,
		"children": []
	}, {
		"menuId": 106,
		"label": "设备安装",
		"menuUrl": "/admin/garden/install",
		"parentMenuId": 99,
		"sortNum": 7,
		"children": []
	}, {
		"menuId": 110,
		"label": "预警消息",
		"menuUrl": "/admin/garden/alert/detail/",
		"parentMenuId": 99,
		"sortNum": 7,
		"children": []
	}]
}, {
	"menuId": 108,
	"label": "系统管理",
	"menuUrl": "#",
	"parentMenuId": 0,
	"sortNum": 1,
	"children": [{
		"menuId": 109,
		"label": "园林管理",
		"menuUrl": "/admin/system/gardens/",
		"parentMenuId": 108,
		"sortNum": 1,
		"children": []
	}, {
		"menuId": 111,
		"label": "帐号管理",
		"menuUrl": "/admin/system/account",
		"parentMenuId": 108,
		"sortNum": 2,
		"children": []
	}, {
		"menuId": 112,
		"label": "企业管理",
		"menuUrl": "/admin/system/enterprise",
		"parentMenuId": 108,
		"sortNum": 3,
		"children": []
	}]
}]

  

javascripot扁平数组转树形数组,并按指定字段排序。

原文:https://www.cnblogs.com/zouzhongxing/p/14051574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!