首页 > 其他分享 >js计算树形数据最大层级数

js计算树形数据最大层级数

时间:2023-02-23 14:55:25浏览次数:37  
标签:arr title treeData 级数 js item 树形 key children

已知树形结构数据通过递归方式结合Math.max方法计算出树形结构最大层级数。

const treeData = [
  {
    title: "0-0",
    key: "0-0",
    children: [
      {
        title: "0-0-0",
        key: "0-0-0",
        children: [
          { title: "0-0-0-0", key: "0-0-0-0" },
          { title: "0-0-0-1", key: "0-0-0-1" },
          { title: "0-0-0-2", key: "0-0-0-2" },
        ],
      },
      {
        title: "0-0-1",
        key: "0-0-1",
        children: [
          { title: "0-0-1-0", key: "0-0-1-0" },
          { title: "0-0-1-1", key: "0-0-1-1" },
          { title: "0-0-1-2", key: "0-0-1-2" },
        ],
      },
      {
        title: "0-0-2",
        key: "0-0-2",
      },
    ],
  },
  {
    title: "0-1",
    key: "0-1",
    children: [
      { title: "0-1-0-0", key: "0-1-0-0" },
      { title: "0-1-0-1", key: "0-1-0-1" },
      { title: "0-1-0-2", key: "0-1-0-2" },
    ],
  },
  {
    title: "0-2",
    key: "0-2",
  },
];
// 计算方法
const getLevel = (arr) => {
  let maxLevel = 0;
  (function callBack(arr, level) {
    ++level;
    maxLevel = Math.max(level, maxLevel);
    for (let i = 0; i < arr.length; i++) {
      let item = arr[i];
      if (item.children && item.children.length > 0) {
        callBack(item.children, level);
      } else {
        delete item.children;
      }
    }
  })(arr, 0);
  return maxLevel;
};

console.log('treeData最大层级:',getLevel(treeData));
控制台输出结果: treeData最大层级: 3

标签:arr,title,treeData,级数,js,item,树形,key,children
From: https://www.cnblogs.com/ZerlinM/p/17147941.html

相关文章

  • node.js实现国标GB28181设备接入sip服务器解决方案SkeyeVSS国标视频云平台
    GB28181接入服务器是SkeyeVSS接入GB28181设备/平台的信令交互服务器,GB28181将SIP定位为联网系统的主要信令基础协议,并利用SIP协议的有关扩展,实现了对非会话业务的兼顾,例如......
  • 在线客服系统复制聊天链接,JS实现复制文本函数
    客服系统(gofly.v1kf.com)后台有这个功能,可以直接复制文本信息,JS实现的函数  functioncopyToClipboard(text){vardummy=document.createElement("input");//......
  • js浮点数精确计算函数(加,减,乘,除)
    js浮点数精确计算函数(加,减,乘,除)//浮点数加法运算functionFloatAdd(arg1,arg2){varr1,r2,m;try{r1=arg1.toString().split(".")[1].length}catch(e){r......
  • json库使用之removeMember
    工作中可能会遇到这种情况:想用json变量的内容但又不需要用全部,想把不需要的项删除掉。此时removeMember派上了用场。removeMember有好几个重载的版本,这里只讲3个常用的版......
  • nodejs 修改端口号 process.env.PORT(window环境下)
    nodejs修改端口号process.env.PORT(window环境下)各个环境下,nodejs设置process.env.PORT的值的命令,如下1.linux环境下:PORT=1234nodeapp.js使用上面命令每次都需......
  • node.js快速入门
    一.NodeJS简介1.1了解NodeJS简单的说Node.js就是运行在服务端的JavaScript。Node.js是一个基于ChromeJavaScript运行时建立的一个平台。Node.js是一个事件驱动I/......
  • Node.js 入门
    本文摘自cnodejs.org,收集的比较全就直接拿过来了,帮助nodejs前端初学者初步了解nodejs的相关基础知识,为后面进一步学习打下基础。    本文摘自cnodejs.org,收集的比......
  • vue3+antd+jsx 实现表格行数据排序的动画效果
    ------------恢复内容开始------------vue3的写法转载https://blog.csdn.net/qq_51898604/article/details/128973430因为ant-design表格组件没有封装拖拽排序的方法,需......
  • JS语法让人困惑的点 “==与===”
    在JS中有很多神奇的语法,非常让人困惑,我们就先一一道来,相信你在开发中或多或少都踩过这些坑,或者让人无法理解。今天我们就来说下【】和【=】这题对于很多没有系统学过前端......
  • 858~860AJAX 概念、实现原生js
    AJAX:1.概念:AsynchronousJavascriptAndXML异步的JavaScript和xml1.异步和同步:客户端和服务器端相互通信的基础上客户端必须等待服务器......