码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • tree型数组平铺,一维数组结构tree型


    一维数组结构成tree型关键是每个一维数字里面必须有一个自己唯一识别的标识(id)和父级唯一识别的表示  (pid)

     function oneTotree(data,pid,idKey,pidKey){

            let node=[]

            pid = pid||"" //这里的值是以哪个pid的值为根节点开始往下找

            idKey =idKey||"id"

            idKey =pidKey||"pid"

            data.forEach(item=>{

              if(item[pidKey]===pid){

                let node=Object.assign(

                  {

                    hidden:true,

                    alawyShow:true

                  },item

                )

                node.path=item.url

                node.id=item.id

                node.name=item.name

                node.children=oneTotree(data,item[idKey],idKey,pidKey)

                if(node.children.length===0){

                  node.isLeaf=true//是否是叶子节点

                  delete node.children

                }

                nodes.push(node)

              }

            })

            return nodes

          }

    tree结构平铺成一维数组结构

    const treeToLine = (list) => {

            return list.reduce(

              (arr, { id, title, parent_id, children = [] }) =>

                arr.concat(

                  [

                    {

                      id,

                      title,

                      parent_id,

                    },

                  ],

                  treeToLine(children)

                ),

              []

            );

          };

    根据叶子节点查找所有他的父级节点

    function getParentId(list, id) {

            for (let i in list) {

              if (list[i].id == id) {

                return [list[i]];

              }

              if (list[i].children) {

                let node = getParentId(list[i].children, id);

                if (node !== undefined) {

                  return node.concat(list[i]);

                }

              }

            }

          }

  • 相关阅读:
    【零基础学QT】第五章 串口模块,小实验控制单片机LED灯
    [保姆级教程] 如何在 Linux Kernel (V5.17.7) 中添加一个系统调用(System call)
    【代码随想录】Day 49 动态规划10 (买卖股票Ⅰ、Ⅱ)
    简化转换器:使用您理解的单词进行最先进的 NLP — 第 1 部分 — 输入
    rust生命期
    智能IC卡称重系统流程及技术要求
    华为的流程体系
    第二篇 如何设计一个RBAC权限系统
    JSON Web Token----JWT和传统session登录认证对比
    RuntimeError: CUDA unknown error #49081
  • 原文地址:https://blog.csdn.net/yuanfanlove/article/details/133136626
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号