当前位置: 首页 > 知识库问答 >
问题:

javascript - js根据id数组匹配树形结构,查找所有的name?

陆飞鸿
2023-05-05

树形结构如图
image.png
比如说有一个id数组arr=[2,7,8]
根据这个数组获取所有id相同的name,返回一个name数组
树形结构示例如下

tree = [
    {

        children: [
            { id: "1633361534304636930", name: "股份公司", parentId: "1633356939104866305", weight: 1 },
            {
                id: "1636300204602986497", name: "峰峰集团", parentId: "1633356939104866305", weight: 2, children: [
                    { id: "1636300266708045826", name: "邯郸洗选厂", parentId: "1636300204602986497", weight: 1, children: [] }
                ]
            }
        ],
        id: "1633356939104866305",
        name: "冀中能源",
        parentId: "0",
        weight: 1,
    },
    {

        children: [{ id: "7", name: "山东沙县", parentId: "2", weight: 7 }],
        id: "2",
        name: "沙县国际",
        parentId: "0",
        weight: 2
    },
    {

        children: [{ id: "1633372327221264385", name: "测试公司", parentId: "1631094382482067457", weight: 10 }],
        id: "1631094382482067457",
        name: "测试总部",
        parentId: "0",
        weight: 3
    },
    {

        children: [{ id: "3", name: "潍坊", parentId: "1", weight: 3 }],
        id: "1",
        name: "山东",
        parentId: "0",
        weight: 10
    }
]

共有1个答案

封昊天
2023-05-05

你可以用递归:

function 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);
  }

  return result;
}

const tree = [
  // ...
];

const ids = [2, 7, 8];
const names = findNamesByIds(tree, ids);
console.log(names); // 输出: ["沙县国际", "山东沙县"]
 类似资料:
  • 本文向大家介绍根据元素ID遍历树形结构,查找到所有父元素ID相关面试题,主要包含被问及根据元素ID遍历树形结构,查找到所有父元素ID时的应答技巧和注意事项,需要的朋友参考一下 ` var list = [{ "orgId": 1, "orgName": "校长办公室1", "parentId": 0 },{ "orgId": 2, "orgName": "校长办公室2", "parentId":

  • 期望结果: 补充 结合边城用户的文章,最后得出的方法:

  • 我有一个树数据结构,其中每个节点可以有任意数量的子节点,树可以是任何高度的。获取树中所有叶节点的最佳方法是什么?有没有可能比遍历树中的每个路径更好,直到我到达叶节点? 在实践中,树的最大深度通常为 5 左右,树中的每个节点将有大约 10 个子节点。 我对其他类型的数据结构或特殊树持开放态度,这将使获取叶节点特别理想。 我正在使用javascript,但实际上只是在寻找一般建议,任何语言等。 谢啦!

  • 有个以下格式的省市区数组对象: 请问如何用Ts变为以下格式的二维数组?

  • 我有一系列这样的Mongoid 这些是我收藏的文件的mongo-id。 现在,通过获取这些mongoIDs的数组,即['mongoID1','mongoID2','mongoID3'],我需要通过使用其_id来查询这些id指定的每个文档,并在我的代码逻辑中独立处理其数据。为了简单起见,我刚刚“打印”了输出ieres.json(doc.name)。 如果Mongoose/MongoDB中确实存在这样

  • 问题内容: 我正在使用以下代码来解析yaml并应将输出作为对象,并且该函数应更改数据结构并根据以下结构提供输出 这是我尝试过的方法,但是我不确定如何从yaml中获取的值 替换 函数运行器中 的硬代码值 与来自 这就是我尝试过的所有想法,该怎么做? 问题答案: 将runners对象的名称分配给名称的struct 字段,并使用与名称匹配的函数命令将命令列表附加到type字段: 操场上的工作代码