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

发布时间 - 2026-01-11 03:09:40    点击率:

如下所示:

/**
   * 将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  # 树状图  # javascript如何用递归写一个简单的树形结构示例  # JavaScript几种形式的树结构菜单  # JavaScript解析任意形式的json树型结构展示  # js用于树型结构级联选择  # JavaScript 处理树数据结构的方法示例  # 详解JavaScript树结构  # js将列表组装成树结构的两种实现方式分享  # 给大家  # 树状  # 希望能  # 所示  # 这篇  # 转换成  # 小编  # 大家多多  # 主键  # function  # lt  # length  # var  # listToTree  # exists  # parentId  # return  # row  # level  # toDo 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何挑选优质建站一级代理提升网站排名?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何在阿里云高效完成企业建站全流程?  如何在腾讯云服务器上快速搭建个人网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  深入理解Android中的xmlns:tools属性  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel如何实现本地化和多语言支持?(i18n教程)  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何用已有域名快速搭建网站?  如何正确选择百度移动适配建站域名?  清除minerd进程的简单方法  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  JavaScript如何实现倒计时_时间函数如何精确控制  Swift中swift中的switch 语句  如何在IIS中配置站点IP、端口及主机头?  PHP 500报错的快速解决方法  googleplay官方入口在哪里_Google Play官方商店快速入口指南  微信公众帐号开发教程之图文消息全攻略  如何在服务器上三步完成建站并提升流量?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Java类加载基本过程详细介绍  文字头像制作网站推荐软件,醒图能自动配文字吗?  Linux系统命令中tree命令详解  魔毅自助建站系统:模板定制与SEO优化一键生成指南  利用JavaScript实现拖拽改变元素大小  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在云虚拟主机上快速搭建个人网站?