【发布时间】:2020-06-07 04:10:19
【问题描述】:
[
{
"secCode": 2,
"secName": "GENERAL NURSING CARE SECTION",
"prevSec": 0,
},
{
"secCode": 1,
"secName": "CRITICAL CARE NURSING SECTION",
"prevSec": 0,
"children": [
{
"secCode": 3,
"secName": "OPERATION THEATRE",
"prevSec": 1,
"children": [
{
"secCode": 5,
"secName": "MAIN OPERATION THEATRE",
"prevSec": 3,
"estCode": 152,
},
{
"secCode": 6,
"secName": "DAY CARE DT SERVICE",
"prevSec": 3,
}
]
},
{
"secCode": 4,
"secName": "CRITICAL CARE SERVICES",
"prevSec": 1,
"children": [
{
"secCode": 675,
"secName": "Test",
"prevSec": 4,
"children": [
{
"secCode": 676,
"secName": "Test1",
"prevSec": 675,
},
{
"secCode": 677,
"secName": "Test 2",
"prevSec": 675,
},
{
"secCode": 678,
"secName": "Test 3",
"prevSec": 675,
},
{
"secCode": 679,
"secName": "Test 4",
"prevSec": 675,
}
]
},
{
"secCode": 7,
"secName": "ACUTE CARE",
"prevSec": 4,
}
]
}
]
}
]
这是tree json树结构。这里每个节点都使用 prevSec 值向后递归地连接到其父节点。 对于 secCode 7,其父树将是 [7, 4, 1] - 通过 secCode = prevSec 连接。 对于 secCode 679,其父级将是 [679, 675, 4, 1] 对于 secCode 2,其父级将是 [2]
我曾尝试过这种部分解决方案
getParent(arr, childSecCode) {
if (childSecCode == 0) {
return;
} else {
let val = arr.find(item => {
childSecCode === item.secCode;
});
if (val) {
//arr.find(item => childSecCode == item.secCode).showChildren = true;
/* if(check ==0)
arr.find(item => childSecCode == item.secCode).className = "selected"; */
this.getParent(arr, val.prevSec);
}
}
}
这不起作用,因为 find 不检查孩子。
我怎样才能达到预期的效果。
【问题讨论】:
-
所以,对于给定的secCode,你需要在这个对象中找到路径。对吗?
-
为什么用 angular 标记?我在问题中看不到任何需要该规范的内容。
-
为什么 "for 7 它的父树将是 [7, 4, 3, 1]" 当 4 的父节点是 1 而不是 3 时?在那里获得3的逻辑是什么?与其他示例相同...
-
为什么要向
getParent传递两个 参数?为什么不只是根是您需要其父项的子树?最好知道在哪种情况下需要此方法。我相信可以设计得更好。最好看看发生这种情况的类,以及整个数据结构存储在哪里,这样我们就可以从根目录访问它。 -
@trincot 在结果 3 中被错误地添加。我已将其删除并更新了问题。
标签: javascript angular angular5