• 递归寻找子节点的所有父节点(父,爷,祖等)


    let retArr: any = [];
    /**
     * 递归找ID
     * @param str 
     * @param arr 
     */
    const findPId = (str: any, arr = data as any) => {
      let curPId = str;
      for (var idx in arr) {
        if (arr[idx].id == str) {
          //返回名字
          retArr.push(arr[idx].name);
          curPId = arr[idx].parentId;
          //找到的时候把找到的这个节点的父ID赋给变量,然后从新开始递归树找到该父节点的父节点,依次循环得到结果
          if (arr[idx].children) {
            findPId(curPId, data);
          }
        }
        //没找到的时候正常递归去寻找下面的节点
        if (arr[idx].children) {
          findPId(curPId, arr[idx].children);
        }
      }
      return retArr;
    };
    
    const clickHanlder = () => {
      let ret = findPId("ZX5001");
      console.log(ret);
    };

    HTML:

     <button type="button" @click="clickHanlder">查找</button>

    测试数据:

    const data = [
      {
        id: "1",
        name: "zs",
        parentId: "0",
        children: [
          {
            id: "1-1",
            name: "zs-1",
            parentId: "1",
            children: [
              {
                id: "1-1-1",
                name: "zs-1-1",
                parentId: "1-1",
                children: [
                  {
                    id: "ZX5001",
                    name: "zs-1-1-1-1",
                    parentId: '1-1-1',
                    children: [
                      {
                        id: "1-1-1-1-41",
                        name: "zs-1-1-zx",
                        parentId: "ZX5001",
                        children: null,
                      },
                    ],
                  },
                ],
              },
              {
                id: "1-1-2",
                name: "zs-1-2",
                parentId: "1-1",
                children: [
                  { id: "1-1-2-ZX", name: "zs-1-2-1", parentId: 1, children: null },
                ],
              },
            ],
          },
          {
            id:'zxxc',
            name: "zs-2",
            parentId: "1",
            children: [
              {
                id: "2-1-1",
                name: "zs-2-1",
                parentId: "zxxc",
                children: [
                  {
                    id: "2-1-1-1",
                    name: "zs-2-1-1Z",
                    parentId: "2-1-1",
                    children: [
                      {
                        id: "2-1-1-1-1",
                        name: "zs-2-1-1-1",
                        parentId: "2-1-1-1",
                        children: null,
                      },
                    ],
                  },
                ],
              },
            ],
          },
        ],
      },
    ];
  • 相关阅读:
    转:Loadrunner——Block(块)技术
    转:Linux基本命令大全
    转:Loadrunner打开https报错“Internet…
    转:对TCP/IP网络协议的深入浅出归纳
    10.2.1 支持的网络视频类型
    10.2 网络视频
    10.1.2 完整的MediaStore视频示例
    10.1.1 来自MediaStore的视频缩略图
    10.1 使用MediaStore检索视频
    第10章 视频进阶
  • 原文地址:https://www.cnblogs.com/llcdbk/p/16576825.html
Copyright © 2020-2023  润新知