当前位置: 首页 > 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进行标号,数字最大的则为根节点。

http://www.dtcms.com/a/97384.html

相关文章:

  • 【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)公式
  • ue材质学习感想总结笔记
  • leetcode230.二叉搜索树中第k小的元素
  • C# 固高板卡(总线型) 操作类
  • C++指针(五)完结篇
  • 19 python 模块
  • 【数据结构】C语言实现并查集:双亲指针映射与动态连通性实现详解
  • stable diffusion 本地部署教程 2025最新版
  • Docker 存储管理那些事儿:简单易懂的讲解与实践示例
  • Codeforces 1011 (Div. 2)A. Serval and String Theory
  • vue+webpack5(高级配置)