javascrip将具有父子关系的节点数据转成树结构

 1     function toTreeData(data){
 2         var pos={};
 3         var tree=[];
 4         var i=0;
 5         while(data.length!=0){
 6             if(data[i].parentid==0){
 7                 tree.push({
 8                     resid:data[i].resid,
 9                     caption:data[i].caption,
10                     href:data[i].href,
11                     children:[]
12                 });
13                 pos[data[i].resid]=[tree.length-1];
14                 data.splice(i,1);
15                 i--;
16             }else{
17                 var posArr=pos[data[i].parentid];
18                 if(posArr!=undefined){
19
20                     var obj=tree[posArr[0]];
21                     for(var j=1;j<posArr.length;j++){
22                         obj=obj.children[posArr[j]];
23                     }
24
25                     obj.children.push({
26                         resid:data[i].resid,
27                         caption:data[i].caption,
28                         href:data[i].href,
29                         children:[]
30                     });
31                     pos[data[i].resid]=posArr.concat([obj.children.length-1]);
32                     data.splice(i,1);
33                     i--;
34                 }
35             }
36             i++;
37             if(i>data.length-1){
38                 i=0;
39             }
40         }
41         return tree;
42     }
时间: 2024-11-13 20:56:44

javascrip将具有父子关系的节点数据转成树结构的相关文章

SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数

---SQL SERVER 2000 遍历父子关系數據表(二叉树)获得所有子节点 所有父节点及节点层数函数---Geovin Du 涂聚文--建立測試環境Create Table GeovinDu([ID] Int, fatherID Int, [Name] Varchar(10))Insert A Select 1, 0, '中国'Union All Select 2, 1, '广东'Union All Select 3, 1, '北京'Union All Select 4, 2, '深圳特区

oracle处理节点之间的父子关系

通常当与树的结构之间的关系处理,这是一个很复杂的事情,我们可以通过程序代码去逐层遍历父或子节点,这样做的缺点是很明显,效率不高,操作复杂性是比较大的.而当我们使用Oracle当数据库,我们可以有一个简单的解决方法,例如下列: 1.首先创建一张表.保存父子关系 drop table tmp_node; create table tmp_node(id varchar2(500),p_id varchar2(500)); 2.向表中插入数据 insert into tmp_node(p_id,id)

js通用方法获取元素,节点父子关系查找

/* *通用方式来获取元素 * 1.通过id来获取元素document.getElementById('属性名') * 2.通过便签名来获取元素document.getElementsByTagName('属性名');得到的是一个数组 * 3.通过class属性来获取元素有兼容性问题document.getElementsByClassName('class属性名');得到是一个数组 * 4.通过name属性来获取元素存在兼容性问题document.getElementsByName('name

oracle 父子关系

语句递归查找父子关系语句 表结构及数据 1.通过根节点遍历子节点 select t.*,LEVEL from Test2 t START WITH t.parentid=0 CONNECT BY PRIOR t.id = t.parentid 2.通过子节点向根节点追溯 select t.*,LEVEL from Test2 t START WITH t.id='13' CONNECT BY PRIOR t.parentid = t.id 3.查找直接子节点(下一层) select t.*,LE

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等 http://doc.qt.io/qt-5/qobject.html http://doc.qt.io/qt-5/qmetaobject.html 我感觉Qt的出现,除了提供GUI以外,主要就是提

Logstash 父子关系 配置

最近在使用Lostash的过程中遇到了一个问题:在一个log文件里包含两类数据,而且两类数据之间存在父子关系,那如何使用lostash的configuration实现这个需求呢 思路: 首先定义父事件的pattern,因为子事件不匹配父pattern,所以logstash会自动为子事件添加_grokparesefailure 标签.通过该标签即可知道当前事件是父事件还是子事件 使用filter->ruby生成document_id,并把它放到ruby全局变量中 ,这样子事件就可以访问到父事件的d

第16课 Qt对象间的父子关系

1. Qt对象间的关系 (1)Qt对象间可以存在父子关系 ①每一个对象都保存有它所有子对象的指针 ②每一个对象都有一个指向其父对象的指针 (2)当指定Qt对象的父对象时 ①其父对象会在子对象链表中加入该对象的指针 ②该对象会保存指向其父对象的指针 (3)当Qt对象被销毁时 ①将自己从父对象的Children List移除 ②将自己的Children List中的所有对象销毁 ▲使用Qt开发时,不仅要时刻注意内存泄露的问题,还要时刻关注对象是否可能被多次销毁的问题. [编程实验]对象间的父子关系

猫猫学iOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:效果 二:项目代码 这个Demo用的几个控制器分别画了不通的xib,随便拖拽了几个空间,主要是几个按钮的切换,主要代码展示下: // // NYViewController.m // 控制器的view的显示 // // Created by apple on 14-10-10. // Copyright (c) 2014年 heima. All rights

QT之对象父子关系

QT对象间可以存在父子关系: 1.每一个对象都保存有它所有子对象的指针 2.每一个对象都有一个指向其父对象的指针 其关系如下图所示: 当指定QT对象的父对象时,其父对象会在子对象链中表中会加入该对象的指针,该对象会保存指向其父对象的指针.我们在QT中创建了3个 QObject 对象,我们让 c1.c2 的父对象指向 p,那么我们打印 c1 和 c2 的地址以及 p 的子对象链表里的地址.如下所示:打印的结果如下:事实证明了确实如我们所想的那样,QT对象间可以存在父子关系.那么当Qt对象被销毁时,