如何在嵌套的json对象数组中获取子ID的直接父ID?

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)

请帮助我解决这个问题,谢谢

tri*_*cot 3

替换这个:

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)