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

扁平数据的数据结构
[{
	"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": []
	}]
}]

  

posted on 2020-11-28 09:08  阿提  阅读(176)  评论(0编辑  收藏  举报

导航