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


相关推荐: 在Oracle关闭情况下如何修改spfile的参数  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  原生JS获取元素集合的子元素宽度实例  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何在云主机上快速搭建网站?  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel怎么使用Intervention Image库处理图片上传和缩放  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  linux写shell需要注意的问题(必看)  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  大型企业网站制作流程,做网站需要注册公司吗?  如何有效防御Web建站篡改攻击?  如何在建站宝盒中设置产品搜索功能?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  电商网站制作价格怎么算,网上拍卖流程以及规则?  奇安信“盘古石”团队突破 iOS 26.1 提权  实例解析Array和String方法  如何在搬瓦工VPS快速搭建网站?  如何在万网自助建站平台快速创建网站?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  在线教育网站制作平台,山西立德教育官网?  Python文件异常处理策略_健壮性说明【指导】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Python文本处理实践_日志清洗解析【指导】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  JavaScript如何实现音频处理_Web Audio API如何工作?  利用python获取某年中每个月的第一天和最后一天  个人摄影网站制作流程,摄影爱好者都去什么网站?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  iOS中将个别页面强制横屏其他页面竖屏  详解MySQL数据库的安装与密码配置  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何创建自定义中间件?(Middleware代码示例)  Android自定义listview布局实现上拉加载下拉刷新功能  大同网页,大同瑞慈医院官网?