js遞歸實(shí)現(xiàn)數(shù)組轉(zhuǎn)樹(shù)結(jié)構(gòu)(多級(jí)菜單應(yīng)用)-優(yōu)化
標(biāo)簽:
JavaScript
自己写的,优化了传入的数组元素(是否有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<len;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<len;i++){
for(var j=0,lenA=ary.length;j<lenA;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<lenB;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<lenB;n++){
delete data[n].id;
}
}
return data;
}
var a=test(aaa);
console.log(a)
點(diǎn)擊查看更多內(nèi)容
4人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)