js或者es6 已知id为222的对象数据,如何查询并返回该数据中parentId: 7对应的对象父节点数据的对象

要查询并返回id为222的对象数据中parentId为7对应的对象的父节点数据,我们需要遍历整个data数组,找到id为222的对象,并从其父节点中提取信息。由于您提供的data数组中的对象格式存在问题(例如,对象的键值对应该用花括号{}包围),我将先帮您修正格式,然后提供查询的代码。

修正后的data数组格式如下:

javascript 复制代码
const data = [
    {
        "id": 1,
        "name": "常用指标",
        "parentId": 0,
        "signalTypeIds": "",
        "harmonicTimes": "",
        "children": [
            {
                "id": 7,
                "name": "相电压",
                "parentId": 1,
                "signalTypeIds": {
                    "0": 1,
                    "1": 94,
                    "2": 161,
                    "3": 228,
                    "4": 295
                },
                "harmonicTimes": "",
                "children": [
                    {
                        "children": undefined,
                        "harmonicTimes": "",
                        "id": 222,
                        "label": "A相",
                        "name": "A相",
                        "parentId": 7,
                        "signalTypeIds": { "0": 1, "1": 94, "2": 161, "3": 228, "4": 295 },
                        "value": "A相"
                    }
                ]
            }
        ]
    },
    {
        "id": 3,
        "name": "电压电流功率",
        "parentId": 0,
        "signalTypeIds": "",
        "harmonicTimes": "",
        "children": [
            {
                "id": 4,
                "name": "相电压",
                "parentId": 3,
                "signalTypeIds": {
                    "0": 1,
                    "1": 94,
                    "2": 161,
                    "3": 228,
                    "4": 295
                },
                "harmonicTimes": "",
                "children": []
            }
        ]
    }
];

现在,我们可以使用以下递归函数来查询并返回id为222的对象的父节点数据:

javascript 复制代码
function findParentNodeById(id, data) {
    for (const item of data) {
        if (item.children) {
            for (const child of item.children) {
                if (child.children) {
                    // 递归搜索孙节点
                    const result = findParentNodeById(id, child.children);
                    if (result) return result; // 如果在孙节点中找到,返回结果
                } else if (child.id === id) {
                    // 找到id为222的对象,返回其父节点
                    return child;
                }
            }
        }
    }
    return null; // 如果没有找到,返回null
}

const parentNode = findParentNodeById(222, data);

console.log(parentNode); // 这将输出id为222的对象的父节点数据

这段代码定义了一个findParentNodeById函数,它接受两个参数:要搜索的id和要搜索的数组。函数内部,它遍历提供的数组及其所有子数组,查找id为指定值的对象。当找到id为222的对象时,它返回该对象的父节点数据。如果没有找到匹配的对象,函数返回null

相关推荐
dleei19 分钟前
彻底淘汰老旧 SVG 插件:unplugin-icons 与 Tailwind CSS v4 自定义图标最佳实践
前端·程序员·前端框架
LlNingyu36 分钟前
文艺复兴,什么是XSS,常见形式(二)
前端·安全·xss
汉堡大王95271 小时前
# AI 终于能"干活"了——Function Calling 完全指南
javascript·人工智能·机器学习
明君879971 小时前
说说我为什么放弃使用 GetX,转而使用 flutter_bloc + GetIt
前端·flutter
Jingyou1 小时前
用 Astro 搭建个人博客:从零到上线的完整实践
前端
吴声子夜歌1 小时前
JavaScript——call()、apply()和bind()
开发语言·前端·javascript
小哈猪1 小时前
CSS Flex 与 Grid:谁才是布局之王?
javascript
高桥凉介发量惊人1 小时前
质量与交付篇(2/6):CI/CD 实战——自动构建、签名、分发
前端
leafyyuki1 小时前
SSE 同域长连接排队问题解析与前端最佳实践
前端·javascript·人工智能
高桥凉介发量惊人1 小时前
质量与交付篇(3/6):崩溃分析与线上问题回溯机制
前端