javascript将list转换成树状结构的实例


Posted in Javascript onSeptember 08, 2017

如下所示:

/**
   * 将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转换成树状结构的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
asp.net和asp下ACCESS的参数化查询
Jun 11 Javascript
csdn 批量接受好友邀请
Feb 19 Javascript
javascript+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
Bootstrap每天必学之日期控制
Mar 07 Javascript
angularjs中回车键触发某一事件的方法
Apr 24 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 jQuery
微信小程序switch开关选择器使用详解
Jan 31 Javascript
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
js实现批量删除功能
Aug 27 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 #Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 #Javascript
js HTML5 canvas绘制图片的方法
Sep 08 #Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
Sep 08 #Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 #Javascript
javascript获取指定区间范围随机数的方法
Sep 08 #Javascript
原生js实现简单的模态框示例
Sep 08 #Javascript
You might like
一个典型的PHP分页实例代码分享
2011/07/28 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
创建Vue项目以及引入Iview的方法示例
2018/12/03 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
Python pass 语句使用示例
2014/03/11 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
使用tensorflow实现线性svm
2018/09/07 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
SQL SERVER面试资料
2013/03/30 面试题
机械专业应届生求职信
2013/09/21 职场文书
个人工作年终总结
2015/03/09 职场文书
2015初中团委工作总结
2015/07/28 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Docker下安装Oracle19c
2022/04/13 Servers