美文网首页
树状结构-根据节点id获取节点

树状结构-根据节点id获取节点

作者: 前端青音 | 来源:发表于2019-11-08 17:35 被阅读0次

    需求

    希望通过一个以节点id组成的数组来查询树结构,并且返回对应节点id对应的节点。

    数据结构

    let testArr = [
                  {
                    children: [
                      {
                        children: [],
                        is_default: 1,
                        level: 1,
                        org_id: 2,
                        org_title: '未分组',
                        parent_id: 1,
                        person_num: 0
                      },
                      {
                        children: [
                          {
                            is_default: 0,
                            level: 2,
                            org_id: 4,
                            org_title: '后端组',
                            parent_id: 3,
                            person_num: 0
                          },
                          {
                            children: [
                              {
                                children: [
                                  {
                                    children: [],
                                    is_default: 0,
                                    level: 4,
                                    org_id: 54,
                                    org_title: '测试',
                                    parent_id: 10,
                                    person_num: 0
                                  }
                                ],
                                is_default: 0,
                                level: 3,
                                org_id: 10,
                                org_title: '部门名称2333',
                                parent_id: 8,
                                person_num: 0
                              }
                            ],
                            is_default: 0,
                            level: 2,
                            org_id: 8,
                            org_title: '运维组',
                            parent_id: 3,
                            person_num: 0
                          }
                        ],
                        is_default: 0,
                        level: 1,
                        org_id: 3,
                        org_title: '技术部',
                        parent_id: 1,
                        person_num: 0
                      }
                    ],
                    is_default: 1,
                    level: 0,
                    org_id: 1,
                    org_title: '测试根节点',
                    parent_id: 0,
                    person_num: 0
                  }
                ]
    

    函数

        /**
         * @param {literal Object *} arr 待查询的id数组
         * @param {literal Array *} data 树结构数据
         * @param {literal Array *} dep 查询arr中的id后,返回的对应的树节点
         */
     getDepart(arr, data, department = []) {
        // 注意:typeof 检测数组和对象都返回‘object’
          if (typeof data === 'object') {
            for (let i = 0; arr[i] !== undefined; i++) {
              for (let j = 0; data[j] !== undefined; j++) {
                if (
                  Number(arr[i]) === Number(data[j].org_id) ||
                  Number(arr[i]) === Number(data[j].id)
                ) {
                  department .push(data[j])
                }
              }
            }
            for (let m = 0; data[m] !== undefined; m++) {
              this.getDepart(arr, data[m].children, department )
            }
          }
          return department 
        }
    

    调用

    console.log(333, this.getDepart([1, 2], testArr))
    

    返回结果

    image.png

    相关文章

      网友评论

          本文标题:树状结构-根据节点id获取节点

          本文链接:https://www.haomeiwen.com/subject/hojwbctx.html