我有一系列通过 parentId 相互关联的任务。但是,任何任务都可以有多个父级。因此不一定是简单的单树层次结构。我想要实现的是,我想要一个孩子[],而不是父母[]。然而,我似乎无法理解如何递归地处理这个问题。任何帮助将不胜感激。
这是平面 JSON 数组
[
{
"_id": "4b04e450-06d5-4453-8d50-d3b2a70d9b2d",
"task_name": "Parent2",
"parents": []
},
{
"_id": "a15ca08e-f13b-4d73-a496-ba23832ea233",
"task_name": "Endpoints",
"parents": [
{
"_id": "97bbf892-8a2a-4f45-befd-4fdbebded04b",
"task_name": "Parent1"
},
{
"_id": "4b04e450-06d5-4453-8d50-d3b2a70d9b2d",
"task_name": "Parent2"
}
]
},
{
"_id": "ee78316a-491e-4db5-8f82-13b12b5b86fc",
"task_name": "Mapping",
"parents": [
{
"_id": "97bbf892-8a2a-4f45-befd-4fdbebded04b",
"task_name": "Parent1"
}
]
},
{
"_id": "97bbf892-8a2a-4f45-befd-4fdbebded04b",
"task_name": "Parent1",
"parents": []
}
]
我想实现的是以下
[
{
"_id": "97bbf892-8a2a-4f45-befd-4fdbebded04b",
"task_name": "Parent1",
"children": [
{
"_id": "ee78316a-491e-4db5-8f82-13b12b5b86fc",
"task_name": "Mapping",
"children": []
},
{
"_id": "a15ca08e-f13b-4d73-a496-ba23832ea233",
"task_name": "Endpoints",
"children": []
}
]
},
{
"_id": "4b04e450-06d5-4453-8d50-d3b2a70d9b2d",
"task_name": "Parent2",
"children": [
{
"_id": "a15ca08e-f13b-4d73-a496-ba23832ea233",
"task_name": "Endpoints",
"children": []
}
]
}
]
我试过的
function transform(list, idAttr, parentAttr, childrenAttr) {
if (!idAttr) idAttr = '_id';
if (!parentAttr) parentAttr = 'parents';
if (!childrenAttr) childrenAttr = 'children';
如果原始数组中的父键等于任务的 _id,则此方法可以正常工作。但是,我不确定如何使其适用于具有对象数组作为值的父键。
动漫人物
幕布斯6054654
相关分类