java将数组转换为树形菜单_list与树形结构转换

代码展示:

lineConvertToTree(list=[]) {

let rootArr = [],childListToKeyValue={};

if (!utils.isArray(list)) return rootArr;

// 组装根节点

for(let i=0;i

if(list[i].parentId===null||list[i].parentId===undefined&&list[i].parentId===''){

rootArr.push(...list.splice(i,1));

i--;

}

}

// 将子节点转为key:value对象

for(let i=0;i

if(!childListToKeyValue[list[i].parentId]){

childListToKeyValue[list[i].parentId]=[];

}

childListToKeyValue[list[i].parentId].push(list[i]);

}

// 多个树集合

for(let i=0;i

// todo 递归:借助一个数组,将相关数据集合在一起、循环,达到递归作用

let currentChildren=[rootArr[i]];

// 通过id与parentId对应关系,组成tree结构

while(currentChildren.length>0){

let currentNode=currentChildren.shift();

currentNode.children=childListToKeyValue[currentNode.id]?childListToKeyValue[currentNode.id]:[];

currentChildren=[...currentChildren,...currentNode.children];

}

}

return rootArr;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值