[英]parent child relation sorting in javascript
我有以下结构
[
{
"category_id" : 1,
"parent_category" : null
} ,
{
"category_id" : 2,
"parent_category" : 1
},
{
"category_id" : 3,
"parent_category" : 1
},
{
"category_id" : 4,
"parent_category" : 2
},
,
{
"category_id" : 5,
"parent_category" : null
},
,
{
"category_id" : 6,
"parent_category" : 5
}
]
所以我有父子关系,我想用以下结构对它进行排序
[
{
"parent_category":[ "array of all children that follow this main parent category" ]
},
{},
{}
]
我已经看到很多解决方案,但所有关于树结构输出
谢谢
你可以尝试这个解决方案。
let json = [
{ id : 1, name : 'A', parent : 0 },
{ id : 2, name : 'B', parent : 0 },
{ id : 3, name : 'C', parent : 1 },
{ id : 4, name : 'D', parent : 2 },
{ id : 5, name : 'E', parent : 1 },
{ id : 6, name : 'F', parent : 2 },
{ id : 7, name : 'G', parent : 0 },
];
//collecting all parents (whose parent is 0)
let parents = json.filter(x => x.parent === 0);
//collecting all chlidren (whose parent is not 0)
let children = json.filter(x => x.parent !== 0);
//iterating through children and pushing it to **parents** json just below the parent
for(x of children){
let index = parents.findIndex(obj => obj.id === x.parent);
parents.splice(index+1, 0, x);
}
现在父母 json根据父母对象进行排序。
parents:
[ { id: 1, name: 'A', parent: 0 },
{ id: 5, name: 'E', parent: 1 },
{ id: 3, name: 'C', parent: 1 },
{ id: 2, name: 'B', parent: 0 },
{ id: 6, name: 'F', parent: 2 },
{ id: 4, name: 'D', parent: 2 },
{ id: 7, name: 'G', parent: 0 } ]
希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.