这种不固定子级key的树状结构怎么,查到id所在的对象节点?

因为整颗树在前端都是双向绑定的,所以树结构最好不要改变,单单怎么根据id == '10' 查出所在节点对象,这对象可能出现在整棵树的任意节点的employeeList中,请巨佬们指教

[
  {
      id:'1',
      name:'集团',
      children:[
        {
            name:'公司1',
            children:[],
            employeeList: [],
        },
        {
            name:'公司2',
            children:[
                {
                    name:'公司2-部门1',
                    children:[],
                    employeeList: [
                        {
                            id:'10',
                            name:'王五',
                            post:'1'
                        }
                    ],
                }
            ],
            employeeList: [],
        }
      ]
      employeeList: [],
  },
  {
    id:'2',
    name:'集团2',
    children:[],
    employeeList: [],
  }
]
阅读 1.9k
2 个回答

参阅:过滤/筛选树节点 - SegmentFault 思否

function findEmployee(nodes, id) {
    for (var node of nodes) {
        const employee = node.employeeList.find(e => e.id === id)
            ?? findEmployee(node.children, id);
        if (employee) { return employee; }
    }
}

console.log(findEmployee(data, "10"));

注意:因为是用的精确相等,所以 ID 要传入 "10",不能是 10

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题