Ram*_*nna 5 javascript recursion json nested node.js
我需要获取特定孩子的父 ID。
这是我的示例 JSON,如果我给实体 ID 32,它应该返回 6 作为父 ID,如果我给 30,它应该返回 5 作为父 ID。
const arr = [{
"id": 0,
"name": "My Entity",
"children": [
{
"id": 1,
"name": "MARKET",
"children": [
{
"id": 2,
"name": "Sales",
"children": [
{
"id": 3,
"name": "District 1",
"children": [
{
"id": 5,
"name": "Area 1",
"children": [
{
"entityId": 30,
"id": 26,
"name": "Mumbai"
},
{
"entityId": 31,
"id": 26,
"name": "Hyderabad"
}
],
"num": 0,
},
{
"id": 6,
"name": "Area 2",
"children": [
{
"entityId": 32,
"id": 32,
"name": "Karnataka"
},
{
"entityId": 33,
"id": 33,
"name": "Andhra Pradesh"
}
],
"num": 0,
},
]
},
]
},
]
},
]
}]
Run Code Online (Sandbox Code Playgroud)
这是我试过的代码
const findParent = (arr, entityId) => {
for (let i = 0; i < arr.length; i++) {
if (arr[i].entityId === entityId) {
return [];
} else if (arr[i].children && arr[i].children.length) {
const t = findParents(arr[i].children, entityId);
if (t !== false) {
t.push(arr[i].id);
return t;
}
}
}
return false;
};
findParents(arr, 30);
Run Code Online (Sandbox Code Playgroud)
但它正在返回如下
[
5,
3,
2,
1,
0
]
Run Code Online (Sandbox Code Playgroud)
但我希望输出是
[
5
]
Run Code Online (Sandbox Code Playgroud)
请帮助我解决这个问题,谢谢
替换这个:
t.push(arr[i].id);
Run Code Online (Sandbox Code Playgroud)
和:
if (t.length == 0) t.push(arr[i].id);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
930 次 |
最近记录: |