全部
常见问题
产品动态
精选推荐

JS 实现:根据 id 数组匹配树形结构并拼接 name 为字符串

管理 管理 编辑 删除

在前端开发中,我们常遇到树形结构数据(如部门树、分类树、菜单树),需要根据给定的id数组找到对应节点的name,并按需求拼接成字符串(如 “一级分类 / 二级分类 / 三级分类”)。本文将通过递归遍历(适配任意层级树形结构)实现该需求,并处理边界情况(如 id 不存在、重复 id 等)。

const id = [2,5,7]  // 选中的id
const treeData = [
  {
    id: 1,
    name: "公司总部",
    children: [
      {
        id: 2,
        name: "技术部",
        children: [
          { id: 3, name: "后端组" },
          { id: 4, name: "测试组" },
          {
            id: 5,
            name: "前端组",
            children: [
              { id: 6, name: "初级开发岗" },
              { id: 7, name: "资深开发岗" },
              { id: 8, name: "前端负责人" }
            ]
          }
        ]
      },
      {
        id: 9,
        name: "产品部",
        children: [
          { id: 10, name: "产品设计组" },
          { id: 11, name: "需求分析组" }
        ]
      }
    ]
  },
  {
    id: 12,
    name: "分公司",
    children: [
      { id: 13, name: "分公司技术部" },
      { id: 14, name: "分公司运营部" }
    ]
  }
];

//实现方法
  findNamesByIds(tree, ids) {
      let result = []
      function traverse(node) {
        if (ids.includes(node.id)) {
          result.push(node.name)
        }
        if (node.children) {
          for (const child of node.children) {
            traverse(child)
          }
        }
      }
      for (const node of tree) {
        traverse(node)
      }

      let result= result.join(' / ')

      return result
         }
    
    //使用
   const result1 =  this.findNamesByIds(treeData,id )
   console.log(result1); // 输出:"技术部/前端组/资深开发岗"

适配任意层级的树形结构,可自定义拼接符

请登录后查看

怎么网名又被占用了 最后编辑于2025-08-23 15:24:23

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
62
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服