扁平化数组转为树形结构
const data = [
{id:1,name:'a'},
{id:12,name:'aa',prentId:1},
{id:121,name:'aaa',prentId:12},
{id:122,name:'aab',prentId:12},
{id:2,name:'b'},
{id:22,name:'ba',prentId:2},
{id:221,name:'baa',prentId:22},
{id:222,name:'bab',prentId:22},
]
const result = data.reduce(function(prev,curr,i,arr){
curr.children = arr.filter(v => v.prentId === curr.id)
if(!curr.prentId){
prev.push(curr)
}
return prev;
},[])
console.log('转换前',data)
console.log('转换后',result)
树形结构转扁平化
const data = [{
"id": 1,
"name": "a",
"children": [{
"id": 12,
"name": "aa",
"prentId": 1,
"children": [{
"id": 121,
"name": "aaa",
"prentId": 12,
"children": []
}, {
"id": 122,
"name": "aab",
"prentId": 12,
"children": []
}]
}]
}, {
"id": 2,
"name": "b",
"children": [{
"id": 22,
"name": "ba",
"prentId": 2,
"children": [{
"id": 221,
"name": "baa",
"prentId": 22,
"children": []
}, {
"id": 222,
"name": "bab",
"prentId": 22,
"children": []
}]
}]
}]
const result = data.reduce(function(prev,curr,i,arr){
prev.push({
id:curr.id,
name:curr.name,
prentId:curr.prentId?curr.prentId:0
})
curr.children && curr.children.forEach(v =>{
v.prendId = curr.id
arguments.callee(prev,v)
})
return prev;
},[])
console.log('转换前',data)
console.log('转换后',result)