根据这样的数据[
{
"id" : "01",
"pId":""
} ,
{
"id" : "01_01",
"pId":"01"
} ,
{
"id" : "01_02",
"pId":"01"
} ,
{
"id" : "01_02_01",
"pId":"01_02"
} ,
{
"id" : "02",
"pId":""
},
{
"id" : "02-01",
"pId":"02"
},
{
"id" : "02-02",
"pId":"02"
},
{
"id" : "03",
"pId":""
},
{
"id" : "03_01",
"pId":"03"
}
]
生成以下类型的数据
[
{
"id": "01",
"pId": "",
"childer":[
{
"id": "01_01",
"pId": "01",
"childer":[]
},
{
"id": "01_02",
"pId": "01",
"childer":[
{
"id": "01_02_01",
"pId": "01_02",
"childer":[]
}
]
},
]
},
{
"id": "02",
"pId": "",
"childer":[
{
"id": "02-01",
"pId": "02",
"childer":[]
},
{
"id": "02-02",
"pId": "02",
"childer":[]
},
] {
"id": "03",
"pId": "",
"childer":[
{
"id": "03_01",
"pId": "03",
"childer":[]
}
]
}
]
{
"id" : "01",
"pId":""
} ,
{
"id" : "01_01",
"pId":"01"
} ,
{
"id" : "01_02",
"pId":"01"
} ,
{
"id" : "01_02_01",
"pId":"01_02"
} ,
{
"id" : "02",
"pId":""
},
{
"id" : "02-01",
"pId":"02"
},
{
"id" : "02-02",
"pId":"02"
},
{
"id" : "03",
"pId":""
},
{
"id" : "03_01",
"pId":"03"
}
]
生成以下类型的数据
[
{
"id": "01",
"pId": "",
"childer":[
{
"id": "01_01",
"pId": "01",
"childer":[]
},
{
"id": "01_02",
"pId": "01",
"childer":[
{
"id": "01_02_01",
"pId": "01_02",
"childer":[]
}
]
},
]
},
{
"id": "02",
"pId": "",
"childer":[
{
"id": "02-01",
"pId": "02",
"childer":[]
},
{
"id": "02-02",
"pId": "02",
"childer":[]
},
] {
"id": "03",
"pId": "",
"childer":[
{
"id": "03_01",
"pId": "03",
"childer":[]
}
]
}
]
var json = [
{
"id" : "01",
"pId":""
} ,
{
"id" : "01_01",
"pId":"01"
} ,
{
"id" : "01_02",
"pId":"01"
} ,
{
"id" : "01_02_01",
"pId":"01_02"
} ,
{
"id" : "02",
"pId":""
},
{
"id" : "02-01",
"pId":"02"
},
{
"id" : "02-02",
"pId":"02"
},
{
"id" : "03",
"pId":""
},
{
"id" : "03_01",
"pId":"03"
}
];
function format(json){
var ret = [], o = {}; function add(arr, data){
var obj = {
"id": data.id,
"pId": data.pId,
"childer": []
};
o[data.id] = obj;
arr.push(obj);
} json.forEach(x => {
if(o[x.pId]){
add(o[x.pId].childer, x);
}else{
add(ret, x);
}
}); return ret;
}
console.log(format(json));