Javascript 如何获取嵌套json对象数组中子Id的直接父Id?
我需要获取特定子项的父id 这是我的JSON示例,如果我给实体id 32,它应该返回6作为父id,如果我给30,它应该返回5作为父idJavascript 如何获取嵌套json对象数组中子Id的直接父Id?,javascript,node.js,json,recursion,nested,Javascript,Node.js,Json,Recursion,Nested,我需要获取特定子项的父id 这是我的JSON示例,如果我给实体id 32,它应该返回6作为父id,如果我给30,它应该返回5作为父id const arr=[{ “id”:0, “名称”:“我的实体”, “儿童”:[ { “id”:1, “名称”:“市场”, “儿童”:[ { “id”:2, “名称”:“销售”, “儿童”:[ { “id”:3, “名称”:“1区”, “儿童”:[ { “id”:5, “名称”:“区域1”, “儿童”:[ { “实体ID”:30, “id”:26, “名称”:“
const arr=[{
“id”:0,
“名称”:“我的实体”,
“儿童”:[
{
“id”:1,
“名称”:“市场”,
“儿童”:[
{
“id”:2,
“名称”:“销售”,
“儿童”:[
{
“id”:3,
“名称”:“1区”,
“儿童”:[
{
“id”:5,
“名称”:“区域1”,
“儿童”:[
{
“实体ID”:30,
“id”:26,
“名称”:“孟买”
},
{
“实体ID”:31,
“id”:26,
“名称”:“海得拉巴”
}
],
“num”:0,
},
{
“id”:6,
“名称”:“区域2”,
“儿童”:[
{
“实体ID”:32,
“id”:32,
“姓名”:“卡纳塔克邦”
},
{
“实体ID”:33,
“id”:33,
“名称”:“安得拉邦”
}
],
“num”:0,
},
]
},
]
},
]
},
]
}]
这是我尝试过的代码
const findParent=(arr,entityId)=>{
for(设i=0;i
但它正在像下面那样回归
[
5,
3,
2,
1,
0
]
但我希望输出是
[
5
]
请在此方面帮助我,谢谢替换此:
t.push(arr[i].id);
与:
我建议更简单的解决办法
const findParent = (arr, entityId) => {
const children = arr.flatMap(parent =>
(item.children || []).map(child => ({ parent, child, entityId: child.entityId }))
)
const res = children.find(item => item.entityId === entityId)
return res.entityId || findChildren(res.map(v => v.child), entityId)
}
哇!一切正常,谢谢你,特林科特先生。如果可能的话,请告诉我它是如何工作的。这个额外的条件使得
push
只执行一次。下次遇到此if
,数组已经有一个元素,因此该条件不再为真。因此,在原始代码中附加到数组的所有其他值现在不再附加到数组中。
const findParent = (arr, entityId) => {
const children = arr.flatMap(parent =>
(item.children || []).map(child => ({ parent, child, entityId: child.entityId }))
)
const res = children.find(item => item.entityId === entityId)
return res.entityId || findChildren(res.map(v => v.child), entityId)
}