java将数组转换为树形菜单_js递归实现数组转树结构(多级菜单应用)-优化

自己写的,优化了传入的数组元素(是否有pid属性)和(pid属性值是否存在)的 处理

var aaa= [{name:'wwb',id:111},{name:'aaa',id:0,pid:"mei"},{name:'a',id:1,pid:"mei"},{name:'b',id:2,pid:1},{name:'c',id:3,pid:1},{name:'d',id:4,pid:2},{name:'e',id:5,pid:2}];

function test(ary,data){

var data=data?data:(function(ary){

var tempAry=[];

var idList=[];

ary.forEach(function(item){idList.push(item.id)});

function deb(id,idList){

var flag=true;

for(var ida in idList){

if(id==idList[ida]){

flag=false;

}

}

return flag;

}

for(var i=0,len=ary.length;i

if(ary[i].pid==undefined||(ary[i].pid!=undefined&&deb(ary[i].pid,idList))){

var obj={name:ary[i].name,id:ary[i].id};

tempAry.push(obj);

}

}

return tempAry;

}(ary));

var temp=0;

if(data.constructor==Array){

for(var i=0,len=data.length;i

for(var j=0,lenA=ary.length;j

if(ary[j].pid==data[i].id){

var obj={name:ary[j].name,id:ary[j].id};

data[i].child=data[i].child||[];

data[i].child.push(obj);

temp++;

}

}

}

}

if(temp>0){

if(data.constructor==Array){

for(var n=0,lenB=data.length;n

data[n].child=test(ary,data[n].child?data[n].child:[]);

if(data[n].child.length==0){

delete data[n].child;

}

delete data[n].id;

}

}

}else{

for(var n=0,lenB=data.length;n

delete data[n].id;

}

}

return data;

}

var a=test(aaa);

console.log(a)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值