js笔记2-树形结构
2017-11-27 11:39
309 查看
树型结构
数型结构就是要做成一个像书的目录那样,一层一层的。(之前上课的一道题)比如:定义一个树形结构描述(中国(湖北(武汉,荆州),广东(广州,惠州),广西(南宁柳州)));
简单
var china = {} undefined china.name = '中国';china.nodes=[];china.nodes.push({name:'湖北'});china.nodes.push({name:'广东'});china.nodes.push({name:'广西'}); 3 china.nodes[0].nodes=[] china.nodes[0].nodes.push({name:'武汉'});china.nodes[0].nodes.push({name:'荆州'}); china.nodes[1].nodes=[] china.nodes[1].nodes.push({name:'广州'});china.nodes[1].nodes.push({name:'惠州'}); china.nodes[2].nodes=[] china.nodes[2].nodes.push({name:'南宁'});china.nodes[2].nodes.push({name:'柳州'});
用个循环
id | name | pid |
---|---|---|
1 | 中国 | -1 |
2 | 湖北 | 1 |
3 | 广东 | 1 |
4 | 广西 | 1 |
5 | 武汉 | 2 |
6 | 荆州 | 2 |
7 | 广州 | 3 |
8 | 惠州 | 3 |
9 | 南宁 | 4 |
10 | 柳州 | 4 |
算法如下
1.先将数据都放到数组中
var dq = [[1,"中国"],[2,"湖北",1],[3,"广东",1],[4,"广西",1],...[5,"武汉",2],[6,"荆州",2],[7,"广州",3],[8,"惠州",3],[9,"南宁",4],[10,"柳州",4] ]
2.以id,name将pid添加到dqk
//dqk存储上述表 var dqk=[] for(var i in dq){ dqk.push({id:dq[i][0], name:dq[i][1], pid:dq[i][2]||-1}); //xx=xx||y如果xx为空,则赋值为y }
结果例1
0 Object id:1 name:"中国" pid:-1
3.再将dpk的数据数形化
- 新建一个对象tree
- 先把dqk的数据一个一个的给tree(按id),在这个过程中,要去判断在原来的tree中是否存在它的上一级即dqk.pid in tree.id,若存在就把dqke给上一级(tree),当它的“孩子”,否则直接children为[]
var tree={} for(var i in dqk){ var obj=dqk[i] ; tree[obj.id]=obj; if(tree[obj.pid]){ tree[obj.pid]["childens"]=tree[obj.pid]["childens"]||[], tree[obj.pid]["childens"].push(obj) } }
部分结果例:
Object childens: Array[3] 0:Object childens:Array[2] id:2 name:"湖北" pid:1 __proto__: Object1: Object childens:Array[2] id:3 name:"广东" pid:1 __proto__: Object2: Object childens: Array[2] id:4 name:"广西" pid:1 __proto__: Object length:3 __proto__: Array[0] id:1 name: "中国" pid:-1
相关文章推荐
- [学习笔记]zTree是一个很好的js插件实现加载树形结构
- 【数据结构与算法学习笔记】PART4 树形结构(二叉树,堆)
- js:数据结构笔记3--栈
- 【JS 设计模式 】用组合模式来实现树形导航--代码结构思路分析(一)
- js的 树形结构
- 【4】学习JS 数据结构与算法笔记
- Vijava 学习笔记之数据中心下(集群和非集群的资源池和ESXI)树形结构展示
- JS笔记(3) 词汇结构(待续。。。)
- java、js中实现无限层级的树形结构(类似递归)
- js 把线性的数据结构改成树形结构
- 使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
- js学习笔记一-语法结构
- 关于SQLServer2005的学习笔记——树形结构问题
- ExtJS学习笔记(一):ExtJS程序的结构及如何定义js的private, public属性、方法
- 使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
- js的树形结构怎么实现
- 关于SQLServer2005的学习笔记——树形结构问题
- js 根据层次码levelno递归生成树形结构的ul
- 【js学习笔记-082】-----文档结构和遍历
- js:数据结构笔记7--哈希表