フラットデータをtreeツリー構造に処理します.

2002 ワード

let data=[            {exist:“false”,appId:“1”,name:“組織管理1”,menuId:1,id:1,type:“menu”,parentId:“root”}            {exist:“false”,appId:“1”,name:“組織管理2”,menuId:2,id:2,type:“menu”,parentId:“root”}            {exist:“false”,appId:“1”,name:“組織管理3”,menuId:3,id:3,type:“menu”,parentId:“root”}            {exist:“false”,appId:“1”,name:“組織管理4”,menuId:4,id:4,type:“menu”,parentId:“1”,            {exist:“false”,appId:“1”,name:“組織管理5”,menuId:5,id:5,type:“menu”,parentId:“1”,            {exist:“false”,appId:“1”,name:“組織管理6”,menuId:6,id:6,type:“menu”,parentId:“5”}            {exist:“false”,appId:“1”,name:“組織管理7”,menuId:7,id:7,type:“menu”,parentId:“5”}            {exist:“false”,appId:“1”,name:“組織管理8”,menuId:8,id:8,type:“menu”,parentId:“7”}            {exist:「false」、appId:「1」、name:「組織管理9」、menuId:9、id:9、type:「menu」、parentId:「3」            {exist:「false」、appId:「1」、name:「組織管理9」、menuId:13、id:13、type:「menu」、parentId:「3」            {exist:“false”,appId:“1”,name:“組織管理10”,menuId:10,id:10,type:“button”,parentId:“1”,            {exist:“false”,appId:“1”,name:“組織管理11”,menuId:11,id:11,type:“button”,parentId:“1”,            {exist:“false”,appId:“1”,name:“組織管理12”,menuId:12,id:12,type:“button”,parentId:“5”}        ];
this.typeMenu = data.filter(item => item['type'] === 'menu');
this.typeButton = data.filter(item => item['type'] === 'button');
this.typeMenu.forEach(item => {
    item['childMenu'] = [];
    item['childButton'] = []
    this.typeMenu.forEach(item1 => {
        if (Number(item1['parentId']) === Number(item['id'])) {
            item['childMenu'].push(item1);
        }
    });
    this.typeButton.forEach(item2 => {
        if (Number(item2['parentId']) === Number(item['id'])) {
            item['childButton'].push(item2);
        }
    });
})
this.typeMenu = this.typeMenu.filter(item => item['parentId'] === 'root');
result = this.typeMenu;