javascript将list转换成树状结构
- /**
- * 将list装换成tree
- * @param {Object} myId 数据主键id
- * @param {Object} pId 数据关联的父级id
- * @param {Object} list list集合
- */
- function listToTree(myId,pId,list){
- function exists(list, parentId){
- for(var i=0; i<list.length; i++){
- if (list[i][myId] == parentId) return true;
- }
- return false;
- }
- var nodes = [];
- // get the top level nodes
- for(var i=0; i<list.length; i++){
- var row = list[i];
- if (!exists(list, row[pId])){
- nodes.push(row);
- }
- }
- var toDo = [];
- for(var i=0; i<nodes.length; i++){
- toDo.push(nodes[i]);
- }
- while(toDo.length){
- var node = toDo.shift(); // the parent node
- // get the children nodes
- for(var i=0; i<list.length; i++){
- var row = list[i];
- if (row[pId] == node[myId]){
- //var child = {id:row.id,text:row.name};
- if (node.children){
- node.children.push(row);
- } else {
- node.children = [row];
- }
- toDo.push(row);
- }
- }
- }
- return nodes;
- }
- var list=[
- {"ids":1,"parendId":0,"name":"Foods",url:"wwww"},
- {"ids":2,"parentId":1,"name":"Fruits"},
- {"ids":3,"parentId":1,"name":"Vegetables"},
- {"ids":4,"parentId":2,"name":"apple"},
- {"ids":5,"parentId":2,"name":"orange"},
- {"ids":6,"parentId":3,"name":"tomato"},
- {"ids":7,"parentId":3,"name":"carrot"},
- {"ids":8,"parentId":3,"name":"cabbage"},
- {"ids":9,"parentId":3,"name":"potato"},
- {"ids":10,"parentId":3,"name":"lettuce"},
- {"ids":11,"parendId":0,"name":"Foods"},
- {"ids":12,"parentId":11,"name":"Fruits"},
- {"ids":13,"parentId":11,"name":"Vegetables"},
- {"ids":14,"parentId":12,"name":"apple"},
- {"ids":15,"parentId":12,"name":"orange"},
- {"ids":16,"parentId":13,"name":"tomato"},
- {"ids":17,"parentId":13,"name":"carrot"},
- {"ids":18,"parentId":13,"name":"cabbage"},
- {"ids":19,"parentId":13,"name":"potato"},
- {"ids":20,"parentId":13,"name":"lettuce"}
- ];
- console.log(JSON.stringify(listToTree("ids","parentId",list)));
- console.log(listToTree("ids","parentId",list));
朝朝暮暮 终于写出来了,好几年前的心愿了
javascript将list转换成树状结构的更多相关文章
- PHP将数据集转换成树状结构
/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * @param string $l ...
- js修改父子json格式成树状结构格式
js修改父子json成树状结构 var json = [ { "id" : "01", "pId":"" } , { & ...
- linux 把ls -R格式化成树状结构
谁能写脚本把linux中的ls -R命令的结果格式化成树状结构? 最好是shell脚本!欢迎讨论! 参与讨论有可能意外获取iPhone6哦~~
- js中把ajax获取的数据转化成树状结构(并做成多级联动效果)
1.首先通过ajax获取数据,此处省略,直接贴出获取到的数据格式 var arr = [{ id: 1, name: "一级标题", pid: 0 }, { id: 2, name ...
- php 二维数组转换成树状数组(转)
<?php/** * @param array $list 要转换的结果集 * @param string $pid parent标记字段 * @param string $level leve ...
- 05 - json转成树状结构
var jsonData = eval(`[ {"id":"4","pid":"1","name": ...
- iOS:二叉树多级表格的使用,使用三方库TreeTableView-master实现对json解析数据的递归遍历整理成树状结构
在项目中,我们有时需要使用二叉树来实现多级表格的递归遍历查询,如果对二叉树比较懂,那么写起来其实也不费事,为了节省开发时间,下面介绍一下第三方库TreeTableView-master,这个三方库上给 ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
- 原生JS实现树状结构列表
树状结构列表,这个技术点之前有写过了,是基于vue讲解,但似乎都没有解决痛点,最基础的原生JS该怎么实现呢? 这篇文章会全面详细的介绍树状结构列表的实现,从数据处理成树状结构,到动态生成dom节点渲染 ...
随机推荐
- nightwatchjs 基于nodejs&& webdriver 协议的自动化测试&&持续集成框架
nightwatchjs 是基于nodejs&& webdriver 协议的自动化测试&&持续集成框架 参考架构 参考资料 http://nightwatchjs.or ...
- vue的watcher 关于数组和对象
数组 不能被监听到的情况 1.直接下标赋值(但对象直接修改原有属性值可以渲染视图,虽然也监听不到) 2.修改数组length 解决方法: this.$set(this.arr,index,val) p ...
- Kubernetes 知识点
自己总结的 Kubernetes 的各模块(待补充) 各模块包含关系: namespace => node => pod => container table th:first-of ...
- java中length与length()
length是对数组而言的,指的是数组的长度. length()是对字符串而言的,指的是字符串所包含的字符个数. public class LengthDemo { public static voi ...
- java-网页404(个例)
tomcat正常启动网址404问题 个例情况: 1.选择第二个 2.web.xml配置不对(是因为缺少相应jar包和配置错误,根据控制器显示的错误一步步解决错误,最后OK) 3.构建路径中有错误(更换 ...
- const引用返回值
一.引用 引用是别名 必须在定义引用时进行初始化.初始化是指明引用指向哪个对象的唯一方法. const 引用是指向 const 对象的引用: ; const int &refVal = iva ...
- Swoole来实现实时异步任务队列
假如要发100封邮件,for循环100遍,用户直接揭竿而起,什么破网站!但实际上,我们很可能有超过1万的邮件.怎么处理这个延迟的问题?答案就是用异步.把“发邮件”这个操作封装,然后后台异步地执行1万遍 ...
- 经典面试题目——找到第n个丑数(参考《剑指offer(第二版)》面试题49)
一.题目大意 给你一个数n,要求返回第n个丑数.其中,丑数的定义如下: 丑数是指只包含因子2.3和5的数.(数字1也是丑数,不过是个特例)引用<剑指offer>上的话来说,对于一个数M,如 ...
- LeetCode——5.Longest Palindromic Substring
一.题目链接:https://leetcode.com/problems/longest-palindromic-substring/ 二.题目大意: 给定一个字符串,找出它最长的回文子串.例如,字符 ...
- [转]jvm加载类规则
jvm包括三种类加载器: 第一种:bootstrap classloader:加载Java的核心类. 第二种:extension classloader:负责加载jre的扩展目录中的jar包. 第三种 ...