把数组的数据结构改成树形结构。

     var aaa = [{name:"111", id: 1, pId: 0, children: []},{name:"222", id: 6, pId: 0, children: []},{name:"b", id: 2, pId: 1, children: []},{name:"c", id: 3, pId: 1, children: []},{name:"d", id: 4, pId: 2, children: []},{name:"d", id: 4, pId: 6, children: []},]function Tree(data) {this.tree = data||[]; //数据this.groups = {}; //分组}Tree.prototype = {init: function(pid) {this.group();var data = this.getData(this.groups[pid]);return data;},group: function () {for(var i=0; i<this.tree.length; i++){if(this.groups[this.tree[i].pId]){this.groups[this.tree[i].pId].push(this.tree[i]);}else{this.groups[this.tree[i].pId]=[];this.groups[this.tree[i].pId].push(this.tree[i]);}}},getData: function (info) { if (!info) return;var children = [];for (var i = 0; i < info.length; i++) {var item = info[i];item.children = item['children'].concat(this.getData(this.groups[item.id]));children.push(item);}return children;}}var d = new Tree(aaa).init(0);console.log(JSON.stringify(d));

我的主要思路是有两步。

1 分组

将所有pId 相同的数据放入一个数组中,

2 从树形结构的最顶层开始查找(pId = 0)。来根据id 递归查找子集。

js 把线性的数据结构改成树形结构相关推荐

  1. 使用js将后台返回的数据转换成树形结构

    将类似如下数据转换成树形的数据: [{ id: 1, name: '1', },{ id: 2, name: '1-1', parentId: 1 },{ id: 3, name: '1-1-1', ...

  2. JS 如何快速高效的将数组转换成树形结构

    JS 如何快速高效的将数组转换成树形结构 const data = [{id: 1,pid: 0,name: 'body'}, {id: 2,pid: 1,name: 'title'}, {id: 3 ...

  3. javascript将平行的拥有上下级关系的数据转换成树形结构

    下载地址 csdn下载地址 服务端数据存储 当有多级菜单或者多级部门这样的场景的时候,传统的结构化数据设计都会用类似parentId来标识其父级,以达到多级树形结构存储于数据库中 服务端提供接口 服务 ...

  4. python画父子关系图_将有父子关系的一维数组转换成树形结构(多维)数据

    先来个函数注释 : /** * 将有父子关系的一维数组转换成树形结构(多维)数据 * console.log(JSON.stringify(setTreeData(data), null, 2)); ...

  5. 将数据库查询出来的数据转化成树形结构

    从数据库查询的每一条数据都包含id和fid字段,将获得的数据转换成树形结构 假设从数据库查询出来的数据对应的实体类: public class department {private int id;p ...

  6. mysql 父子维,将有父子关系的一维数组转换成树形结构(多维)数据

    拉莫斯之舞 先来个函数注释 :/** * 将有父子关系的一维数组转换成树形结构(多维)数据 * console.log(JSON.stringify(setTreeData(data), null,  ...

  7. 数据结构之【树形结构】复习题

    第五章        树形结构 一.选择题 1.已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D    ) A.-A+B*C/DE       B.-A ...

  8. python list转换成树形结构_python递归查询菜单并转换成json实例

    最近需要用python写一个菜单,折腾了两三天才搞定,现在记录在此,需要的朋友可以借鉴一下. 备注:文章引用非可执行完整代码,仅仅摘录了关键部分的代码 环境 数据库:mysql python:3.6 ...

  9. java 通用扁平数据转换成树形结构

    大家好,我是入错行的bug猫.(http://blog.csdn.net/qq_41399429,谢绝转载) 所谓树形结构,就是上级节点中,包含若干子节点,然后子节点中又包含其子节点,一般是没有层级次 ...

最新文章

  1. 九、非主体机构元素——header元素、footer元素、address元素、网页编排
  2. shell实例第14讲:字符串截取的8种方法
  3. 【数据分析】年轻人如何才能实现年薪百万呢?用数据分析来帮你探探路
  4. linux / ubuntu / 添加和查看环境变量的方法
  5. logo、展板、彩页、手提袋总结
  6. 平衡二叉树AVL插入
  7. glassfish 初次使用 (介绍・目录结构・注意点・基本命令・控制台・eclipse插件安装)
  8. 潜流式人工湿地计算_「环保技术」农村混合污水人工湿地处理
  9. aurelia_Aurelia历险记:创建自定义PDF查看器
  10. AI量化交易(二)——Tushare财经数据框架
  11. matlab ss2ss,Zemax+DDE+toolbox+for+Matlab 该工具箱可实现matlab编程和zemax通信 - 下载 - 搜珍网...
  12. html5 中秋博饼游戏,微信通用功能模块 中秋博饼V4.1.5 开源版
  13. Android软键盘删除键触发Activity的返回事件
  14. Java实现人脸识别登录、注册等功能
  15. Cadence Orcad Capture主要工作窗口介绍
  16. 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
  17. 大咖丨昆仑数据陈晨:工业大数据真正要做的是智能分析和智能决策
  18. Photorealistic Face de-Identification by AggregatingDonors’ Face Components论文阅读笔记
  19. 史上最简单详细的Hadoop完全分布式集群搭建
  20. 晚上学习效率太低、学不进去怎么救?

热门文章

  1. linux系统高级管理工具包,linux两大系统的包管理工具
  2. r语言 运算符_R语言运算符
  3. 如何使用React Native样式表?
  4. 弹性理论法研究桩基受力计算公式_竖向荷载下群桩的承载力分析
  5. python打开word后再关闭再打开出错_用Python写了个程序调用word,运行完后再手动打开word文档就变慢了,这是为啥?...
  6. php根据设备判断访问,PHP判断设备访问来源
  7. php分布式的锁,laravel分布式并发锁
  8. 数组tostring方法_数组toString()方法以及JavaScript中的示例
  9. 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!...
  10. HashMap 为什么在链表长度为 8 的时候转红黑树,为啥不能是 9 是 10?