问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript 将表格形式的分级数据转成JSON的树状形式

发布网友 发布时间:2022-04-26 14:47

我来回答

2个回答

懂视网 时间:2022-05-15 21:14

下面小编就为大家带来一篇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));

热心网友 时间:2022-05-15 18:22

var data=[ {'category': '01'},
{'category': '0101'},
{'category': '010101'},
{'category': '01010101'},
{'category': '01010102'},
{'category': '01010103'},
{'category': '010102'},
{'category': '0102'},
{'category': '010201'},
{'category': '010202'},
{'category': '02'},
{'category': '020101'},
{'category': '020102'} ];
var res=data.filter((o)=>o.category.length==2).map((o)=>{
   o.sub=data.filter((o1)=>o1.category.substr(0,2)==o.category&&o1.category.length==4).map((o1)=>{
      o1.sub=data.filter((o2)=>o2.category.substr(0,4)==o1.category&&o2.category.length==6).map((o2)=>{
         o2.sub=data.filter((o3)=>o3.category.substr(0,6)==o2.category&&o3.category.length==8);
         return o2;
      });
      if(!o1.sub.length)o1.sub=data.filter((o2)=>o2.category.substr(0,4)==o1.category&&o2.category.length==8);
      return o1;
   });
   if(!o.sub.length)o.sub=data.filter((o1)=>o1.category.substr(0,2)==o.category&&o1.category.length==6);
   return o;
});
console.log(res);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
汽车上保险都选哪几种? 刚怀孕能不能吃酸辣粉 西红柿冬天的储存方法 城市轨道交通和汽修哪个好就业? 女职工退休年龄是多大的 我国法定女性退休年龄是多少岁 坐月子能吃枸杞红枣吗? 坐小月子能不能吃枸杞 2017年最让你期待的动漫是哪部?为什么? 骨汤面的做法骨汤面怎么做 智能硬件平台有哪些? 一个APP如何控制多个智能硬件 国内智能硬件,就靠苹果Homekit了吗 苏州智能硬件app开发,物联网app开发哪家好 苹果6升级了ios10.1.1系统之后,屏幕就无法旋转,无法重力感应,这是怎么回事? 陈数代言红谷后跨界设计的明星款手袋是什么? 联想看家宝APP与智慧联想APP有啥区别 日本各地名字的罗马音,如东京--TOKYO~ 钱包买什么品牌 智能硬件APP开发需要多少钱 智能硬件APP开发都应用于哪些生活领域 日本好听的地名 红谷皮具在哪? 鹿客智能app是什么? 红谷的logo图标是什么? 手机APP配置智能硬件有几种方式 红谷的LOGO变了吗?刚买的包包上的LOGO怎么和之前的不一样? HONGU红谷做皮具很知名吗?还有个红谷商学院,是做什么的? 智能硬件APP方案开发公司怎么样 红谷和卡思乐那个档次高 各位大神,有知道这个树状表格是用什么控件做的吗,或者那种编程语言可以实现? 家里的卫生间漏水了,要重新做防水,需要多少钱?重新贴砖需要多少钱? 卫生间漏水,打掉瓷砖重新做防水需要多少钱 如何用CSS或JS脚本实现树形列表样式 如何用js实现select下拉框里是树形结构,可复选,select框中传复选所... 卫生间漏水,打掉瓷砖重新做防水需要多少 web前端中有什么框架可以实现这种树形表格 卫生间重新做防水大概多少钱 卫生间防水没做好,重新做大约多少钱? JS怎样取到树形数据每一条的最后一层中的某个值生成新的数组 一般卫生间漏水维修多少钱 谁做过jquery的树形菜单,如jstree,treeview之类的,最好是给个详细的例 ... 我们家楼上的卫生间漏水,跟他们沟通不了,走司法途径又太麻烦,想问一下敲掉重做防水需要多少钱? 关于一个js制作的多级树型菜单如何使他默认为展开所有结点的问题 在 ... JS数据处理,后台一组数据,重组成需要的树形,但是当我点击二级标题时怎么得到它对应的一级标题? jquery easyUI的树型网格要求的js格式必须拼成纵深的children形式吗,这样... USB无线网卡上网速速度慢怎么办? 为什么usb无线网卡网速那么慢 笔记本使用USB无线网卡,如果感觉网速太慢,加个无线路由管用么? 我用无线网卡usb那种收wifi给电脑但是网速很慢只有几十k,我用手机接收wif发给电脑很快