You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 递归查询嵌套对象匹配键值路径 如何返回数组而非拼接字符串

解决方案

将原逻辑中字符串拼接的部分改为数组拼接即可,修改后的完整代码如下:

const data = [
    {
        parentId: "1111",
        name: "Audi",
        children : [
            {
                parentId: "2222",
                name: "Benz",
                children : [
                    {
                        parentId: "3333",
                        name: "VW",
                        children : [
                        ]
                    }
                ]
            }
        ]
    }
]

const pathTo = (array, target) => {
    let result;
    array.some(({ parentId, name, children = [] }) => {
        if (parentId === target) {
            // 匹配到目标节点,初始化单元素数组
            result = [JSON.stringify({ parentId, name })];
            return true;
        }
        const temp = pathTo(children, target);
        if (temp) {
            // 子节点匹配到路径,把当前节点插入数组头部
            result = [JSON.stringify({ parentId, name }), ...temp];
            return true;
        }
    });
    return result;
};

console.log(pathTo(data, "3333"))

运行输出结果:

[
  '{"parentId":"1111","name":"Audi"}',
  '{"parentId":"2222","name":"Benz"}',
  '{"parentId":"3333","name":"VW"}'
]

逻辑说明

  • 匹配到目标节点时,直接返回仅包含当前节点序列化结果的数组
  • 子节点递归返回有效路径时,将当前节点的序列化结果插入数组开头,即可保证路径顺序是从根节点到目标节点
  • 不需要序列化存储的话,直接删除JSON.stringify调用,就能直接返回节点对象组成的路径数组。

内容的提问来源于stack exchange,提问作者employee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:24:03