当前位置: 首页 > news >正文

如何在根据名称或id找到json里的节点以及对应的所有的父节点?

函数如下:

数据如下:

[{

  "name": "数据看板",

  "id": "data",

  "pageName": "tableeauData",

  "list": []

}, {

  "name": "审计模块",

  "id": "caigou",

  "pageName": "tableeauCaigou",

  "list": [{

    "name": "采购模块",

    "isActive": true,

    "pageName": "tableeauCaigou",

    "id": "caigou"

  }, {

    "name": "分销模块",

    "id": "fenxiao"

  }, {

    "name": "仓库物流模块",

    "id": "cangkuwuliu"

  }, {

    "name": "媒介模块",

    "id": "meijie"

  }]

}, {

  "name": "风险场景",

  "id": "caigoubuheli",

  "pageName": "caigoubuheli",

  "list": [{

    "name": "采购模块",

    "isActive": true,

    "pageName": "tableeauCaigou",

    "id": "caigou",

    "list": [{

      "name": "采购拆单",

      "isActive": true,

      "pageName": "caigoubuheli",

      "id": "caigoubuheli"

    }, {

      "name": "招标管理不规范",

      "isActive": true,

      "pageName": "zaobiaobuhege",

      "id": "zaobiaobuhege"

    }]

  }, {

    "name": "分销模块",

    "id": "fenxiao"

  }, {

    "name": "仓库物流模块",

    "id": "cangkuwuliu"

  }, {

    "name": "媒介模块",

    "id": "meijie"

  }]

}, {

  "name": "仓库物流模块",

  "id": "cangkuwuliu",

  "pageName": "cangku",

  "list": []

}, {

  "name": "媒介模块",

  "id": "meijie",

  "pageName": "meijie",

  "list": []

}]

就是一个json里有很多的list嵌套,这种常常用于处理树形结构的数据,比如菜单,再比如含有各种分类的商品,都是需要通过子节点反推到父节点

  let no = 0

  function findNodeByPageName(list, pageName) {

    for (const item of list) {

      if (item.list) {

        const result = findNodeByPageName(item.list, pageName);

        if (result) {

            no++

          result['parent' + no] = item;

          return result;

        }

      }

      if (item.pageName === pageName) {

        return {

          current: item,

          parent: null

        };

      }

    }

    return null;

  }

  // 示例用法

  const result = findNodeByPageName(menuList.value, routerName);

  console.log(result);

结果如下:

从当前节点进行反推,找到所有的父节点,然后用no进行标号,数字最大的则为根节点。

相关文章:

  • 【JavaScript】八、对象
  • mybatis笔记(下)
  • 每日一题之杨辉三角
  • scss基础用法
  • AI×数据治理|百分点科技BD-OS重构数据工程的“基石能力”
  • Linux系统 | 线程的同步与互斥
  • 蓝桥杯 合并数列
  • AI Agent 开发与传统后端开发区别?
  • 项目-苍穹外卖(十六) Apache ECharts+数据统计
  • SpringSecurity OAuth2:授权服务器与资源服务器配置
  • 基于Spring Boot的服装定制系统的设计与实现(LW+源码+讲解)
  • FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读
  • 硬件基础--16_公式梳理
  • “头”里有什么——HTML 元信息
  • Stable Virtual Camera 重新定义3D内容生成,解锁图像新维度;BatteryLife助力更精准预测电池寿命
  • gogs私服搭建
  • Django自带的Admin后台中如何获取当前登录用户
  • 概率与决策理论
  • 【AI】10卡的GPU服务器,Docker 配置 docker-compose.yml 限制指定使用最后两块GPU 序号8,9
  • 欧几里得距离(Euclidean Distance)公式
  • 以军向也门3个港口的居民发布撤离令
  • 体坛联播|C罗儿子完成国家队首秀,德约结束与穆雷合作
  • 加拿大总理宣布新内阁名单
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿
  • 受贿3501万余元,中石油原董事长王宜林一审被判13年
  • 西北大学副校长范代娣成陕西首富?系家庭财富,本人已从上市公司退出