一个json 数组转tree
来源:互联网 发布:算法分析 编辑:程序博客网 时间:2024/06/10 20:52
一个json 数组
var nodes = [
{"id":2,"title":"第一级1","parentid":0},
{"id":3,"title":"第二级1","parentid":2},
{"id":4,"title":"第二级2","parentid":2},
{"id":5,"title":"第三级1","parentid":4},
{"id":6,"title":"第三级2","parentid":3}
];
如何用递归的方式
转成
var newnode = {
id:"2",
title:"第一级1",
children:[
{
id:"3",
title:"第二级1",
children:[
{
id:"6",
title:"第三级2",
children:[]
}
]
},
{
id:"4",
title:"第二级2",
children:[
{
id:"5",
title:"第三级1",
children:[]
}
]
}
]
}
递归算法
function fn(data, parentid) {
var result = [], temp;
for (var i = 0; i < data.length; i++) {
if (data[i].parentid== parentid) {
var obj = {"text": data[i].name,"id": data[i].id};
temp = fn(data, data[i].id);
if (temp.length > 0) {
obj.children = temp;
}
result.push(obj);
}
}
return result;
}
2.for循环
[
{"id":1,"parendId":0,"name":"系统管理","url":"chart/list1.html"},
{"id":2,"parentId":1,"name":"Fruits","url":"chart/list1.html"},
{"id":3,"parentId":1,"name":"Vegetables"},
{"id":4,"parentId":2,"name":"apple"},
{"id":5,"parentId":2,"name":"orange","url":"chart/list1.html"},
{"id":6,"parentId":3,"name":"tomato"},
{"id":7,"parentId":3,"name":"carrot"},
{"id":8,"parentId":3,"name":"cabbage"},
{"id":9,"parentId":3,"name":"potato"},
{"id":10,"parentId":3,"name":"lettuce"}
]
那么如何将url添加到tree中呢?
function convert(rows){
function exists(rows, parentId){
for(var i=0; i<rows.length; i++){
if (rows[i].id == parentId) return true;
}
return false;
}
var nodes = [];
// 获取顶级的node
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (!exists(rows, row.parentId)){
/**
gys 给顶层添加链接
**/
var topNode={id:row.id,text:row.name,url:row.url};
nodes.push(topNode);
/* nodes.push({
id:row.id,
text:row.name
}); */
}
}
var toDo = [];
for(var i=0; i<nodes.length; i++){
toDo.push(nodes[i]);
}
while(toDo.length){//循环toDo当toDo长度为零时停止
var node = toDo.shift();//删除第一个元素,然后返回第一个元素,改变数组长度
// 获取子节点
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (row.parentId == node.id){
var child = {id:row.id,text:row.name};
/**
gys 添加链接
**/
if(row.url){
child.url=row.url;
}
if (node.children){
node.children.push(child);
} else {
node.children = [child];
}
toDo.push(child);
}
}
}
return nodes;
}
- 一个json 数组转tree
- extjs Tree转json
- map转json格式的返回一个数组的格式
- json 数组 转json对象。
- Json对象转json数组
- tree date转json解决方案
- json集合转tree结构
- JSON就是一个对象的数组
- 把json格式赋给一个数组
- 对象数组转JSON
- 多维数组转json
- json 数组 转bean
- js数组转json
- 数组 字典转Json
- JSON字符串数组转
- PHP数组转json
- 数组转json
- Json数组转Gson
- Spring Boot + Mybatis + Redis二级缓存
- “阀值”与“阈值”的区别
- linux tomcat 杀死进程,部署配置文件,重启tomcat
- 一个可支持中文搜索的Icon图标网站
- oracle帮助文档——performance性能 tuning guide
- 一个json 数组转tree
- 用sharedPreference存值和拿值
- C/C++ 线程池
- Activity 跳转时的生命周期流程
- python学习通过smtp发送电子邮件
- 容斥的原理及广义应用
- PHP程序员要想在北京买房你得狠
- Ubuntu14.04+caffe配置过程中出现的问题
- windows下读取数字证书信息