我有一个对象数组,结构如下所示
const data ={深度:0,id:1,name:"data 1“},{埋深:0,id:2,name:"data 2”},{埋深:0,id:3,name:"data 3“},{埋深:1,id:11,name:"data 11",parentid:1,},{埋深:1,id:12,name:"data 12",parentid:1,},{埋深:1,id:21,name:"data 21",parentid:2,},}{深度:1,id:31,名称:“data 31",父母:3,},{埋深:2,id:111,名称:”data 111",父母:11,},{深度:2,id:112,name:"data 112",parentid:11,},{埋深:2,id:113,name:"data 113",parentid:11,},{埋深:2,id:121,name:"data 121",parentid:12,},{埋深:2,id:122,名称:“data 122",父母:12,},{深度:2,id:211,名称:”data 211",父母:21,},{深度:3,id:2111,名称:“data 2111",父母:211,},{埋深:3,id:2112,名称:”data 2112",parentid:211,}
我要输出如下所示
const output= [
{
depth:0,
id:1,
name:"data 1",
childs:[
{
depth:1,
id:11,
name:"data 11",
parentid:1,
childs:[
{
depth:2,
id:111,
name:"data 111",
parentid:11,
},
{
depth:2,
id:112,
name:"data 112",
parentid:11,
},
{
depth:2,
id:113,
name:"data 113",
parentid:11,
},
]
},
{
depth:1,
id:12,
name:"data 12",
parentid:1,
childs:[
{
depth:2,
id:121,
name:"data 121",
parentid:12,
},
{
depth:2,
id:122,
name:"data 122",
parentid:12,
},
]
},
]
},
{
depth:0,
id:2,
name:"data 2",
childs:[
{
depth:1,
id:21,
name:"data 21",
parentid:2,
childs:[
{
depth:2,
id:211,
name:"data 211",
parentid:21,
childs:[
{
depth:3,
id:2111,
name:"data 2111",
parentid:211,
},
{
depth:3,
id:2112,
name:"data 2112",
parentid:211,
},
]
}
]
}
]
},
{
depth:0,
id:3,
name:"data 3",
childs:[
{
depth:1,
id:31,
name:"data 31",
parentid:3,
},
]
},
]
发布于 2022-05-28 08:43:21
你可以做这样的事
const createTree = data => {
const initials = data.filter(d => !d.parentid)
const loop = (item) => {
const childs = data.filter(d => d.parentid === item.id)
if(!childs.length){
return item
}
return {
...item,
childs: childs.map(loop)
}
}
return initials.map(loop)
}
const data = [ { depth:0, id:1, name:"data 1" }, { depth:0, id:2, name:"data 2" }, { depth:0, id:3, name:"data 3" }, { depth:1, id:11, name:"data 11", parentid:1, }, { depth:1, id:12, name:"data 12", parentid:1, }, { depth:1, id:21, name:"data 21", parentid:2, }, { depth:1, id:31, name:"data 31", parentid:3, }, { depth:2, id:111, name:"data 111", parentid:11, }, { depth:2, id:112, name:"data 112", parentid:11, }, { depth:2, id:113, name:"data 113", parentid:11, }, { depth:2, id:121, name:"data 121", parentid:12, }, { depth:2, id:122, name:"data 122", parentid:12, }, { depth:2, id:211, name:"data 211", parentid:21, }, { depth:3, id:2111, name:"data 2111", parentid:211, }, { depth:3, id:2112, name:"data 2112", parentid:211, }]
const tree = createTree(data)
console.log(tree)
https://stackoverflow.com/questions/72413895
复制相似问题