首页 > 编程语言 >javascript中无限分类递归树

javascript中无限分类递归树

时间:2023-01-10 13:46:11浏览次数:65  
标签:map 分类 name 递归 javascript pid item 无限 id

摘抄:https://www.cnblogs.com/silfox/p/11411680.html(原文)

列表转换成树形结构方法定义:

 1 //javascript  树形结构
 2 function toTree(data) {
 3     // 删除 所有 children,以防止多次调用
 4     data.forEach(function(item) {
 5         delete item.children;
 6     });
 7 
 8     // 将数据存储为 以 id 为 KEY 的 map 索引数据列
 9     var map = {};
10     data.forEach(function(item) {
11         // 在该方法中可以给每个元素增加其他属性
12         item.text = item.name;
13         map[item.id] = item;
14     });
15     //  console.log(map);
16 
17     var val = [];
18     data.forEach(function(item) {
19 
20         // 以当前遍历项,的pid,去map对象中找到索引的id
21         var parent = map[item.pid];
22 
23         // 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
24         if (parent) {
25             // 可以给每个父节点添加属性
26             parent.iconCls = "i-folder";
27             //  添加到父节点的子节点属性中
28             (parent.children || (parent.children = [])).push(item);
29 
30         } else {
31             //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
32             val.push(item);
33         }
34     });
35     return val;
36 }

树形结构数据

 1 var data = [
 2         {
 3             id:1,
 4             name :"一级分类:1",
 5             pid :0,
 6         },
 7         {
 8             id:2,
 9             name :"二级分类:1",
10             pid :1,
11         },
12         {
13             id:3,
14             name :"三级分类:3",
15             pid :2,
16         },
17         {
18             id:4,
19             name :"一级分类:2",
20             pid :0,
21         },
22         {
23             id:7,
24             name :"f级分类:2",
25             pid :4,
26         },
27         {
28             id:10,
29             name :"f级分类:2",
30             pid :7,
31         },
32         {
33             id:9,
34             name :"f级分类:2",
35             pid :10,
36         },
37         {
38             id:12,
39             name :"f级分类:2",
40             pid :9,
41         },
42         {
43             id:15,
44             name :"f级分类:2",
45             pid :12,
46         },
47         {
48             id:13,
49             name :"f级分类:2",
50             pid :15,
51         },
52     ]

 

标签:map,分类,name,递归,javascript,pid,item,无限,id
From: https://www.cnblogs.com/junechen/p/17039939.html

相关文章

  • 14个非常棒的 JavaScript 游戏开发框架推荐
     ​​LimeJS​​​​​​这是一个基于HTML5游戏框架,用于快速构建运行于现代触摸屏和桌面浏览器的游戏(需要***访问)。 ​​Impact​​​​​​ 这是一个专业的JavaScript......
  • 浏览器访问 JSP 文件时无法进入 JavaScript 代码
    问题描述浏览器访问<head>中有JavaScript代码的JSP文件:<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>$Title......
  • JavaScript学习笔记—常量、标志符
    1.常量使用const声明常量,常量只能赋值一次,重复赋值会报错除了常规的常量外(如PI),有一些对象类型的数据也会生命为常量constPI=3.1415926;console.log(PI);//3.14......
  • 一次代码重构 JavaScript 图连通性判定
    简介说重构其实就是整理了代码,第一次自己手写写的很丑,然后看了书上写的,虽然和书上的思路不同但是整理后几乎一样漂亮效果整体代码如下classNode{AdjNodes=new......
  • JavaScript 性能优化
    JavaScript是一门动态类型、解释型的编程语言,在网页开发中扮演着非常重要的角色。随着网页的复杂度和访问量的增加,JavaScript性能的优化就显得越来越重要。下面是一些常......
  • JavaScript 防抖和节流
    JavaScript防抖和节流是两种常见的性能优化技术,用于减少函数的执行次数。防抖(debounce)是指在一段时间内,如果有多次触发事件,则只执行最后一次事件。节流(throttle)是指在一......
  • JavaScript项目榜单
    JavaScript项目榜单参考资料2022年最受欢迎的JavaScript项目榜单出炉BestofJS正式公布2022年JavaScript明星项目榜单该榜单提供了过去12个月JavaScript生态......
  • Python设置递归深度(python代码报错maximum recursion depth exceeded)
    现象:Python写了一个递归脚本,运行报错:pythonmaximumrecursiondepthexceeded原因:超过最大递归深度解决:手动设置递归深度importsyssys.setrecursionlimit(1000000......
  • javascript将文本转语音功能
    通过jiavascript将文本内容转化为语音播放,代码如下:<body><buttononclick="start()">点击</button><script>vartext='语音输入开始'var......
  • 03 JavaScript
    JavaScriptECMAScript和JavaScript的关系1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECM......