在nodejs
我的数据库如下:
id |名称| parentId
1 | Cate1 | null
2 |类别2 | 1
3 | Cate3 | 2
我的预期输出是
{
id:1,
name:"Cate1",
parentId:null,
subCate:[
{
id:2,
name:"Cate2",
parentId:1,
subCate:[
{
id:3,
name:"Cate3",
parentId:2,
subCate:[]
}
]
}
]
}
依此类推...
如何获得此结果。
回答如下:function getNestedChildren(arr, parentId) {
var out = []
for (var i in arr) {
if (arr[i].parentId == parentId) {
var children = getNestedChildren(arr, arr[i].id)
if (children.length) {
arr[i].subCate = children
}
out.push(arr[i])
}
}
return out
}
console.log(JSON.stringify(getNestedChildren([
{id: 1, name: 'edwd', parentId: null},
{id: 2, name: 'ttt', parentId: null},
{id: 3, name: 'ooo', parentId: 1},
{id: 4, name: 'ppp', parentId: 3},
{id: 5, name: 'lll', parentId: 4},
{id: 6, name: 'mmm', parentId: 4},
{id: 7, name: 'nnn', parentId: 3},
{id: 8, name: 'zzz', parentId: 2}
], null)))
在nodejs
我的数据库如下:
id |名称| parentId
1 | Cate1 | null
2 |类别2 | 1
3 | Cate3 | 2
我的预期输出是
{
id:1,
name:"Cate1",
parentId:null,
subCate:[
{
id:2,
name:"Cate2",
parentId:1,
subCate:[
{
id:3,
name:"Cate3",
parentId:2,
subCate:[]
}
]
}
]
}
依此类推...
如何获得此结果。
回答如下:function getNestedChildren(arr, parentId) {
var out = []
for (var i in arr) {
if (arr[i].parentId == parentId) {
var children = getNestedChildren(arr, arr[i].id)
if (children.length) {
arr[i].subCate = children
}
out.push(arr[i])
}
}
return out
}
console.log(JSON.stringify(getNestedChildren([
{id: 1, name: 'edwd', parentId: null},
{id: 2, name: 'ttt', parentId: null},
{id: 3, name: 'ooo', parentId: 1},
{id: 4, name: 'ppp', parentId: 3},
{id: 5, name: 'lll', parentId: 4},
{id: 6, name: 'mmm', parentId: 4},
{id: 7, name: 'nnn', parentId: 3},
{id: 8, name: 'zzz', parentId: 2}
], null)))