请问如何将具有父子关系的json数据生成树状结构的数据

qq_34222567 2017-11-09 08:06:00
根据这样的数据[
{
"id" : "01",
"pId":""
} ,
{
"id" : "01_01",
"pId":"01"
} ,
{
"id" : "01_02",
"pId":"01"
} ,
{
"id" : "01_02_01",
"pId":"01_02"
} ,
{
"id" : "02",
"pId":""
},
{
"id" : "02-01",
"pId":"02"
},
{
"id" : "02-02",
"pId":"02"
},
{
"id" : "03",
"pId":""
},
{
"id" : "03_01",
"pId":"03"
}
]
生成以下类型的数据
[
{
"id": "01",
"pId": "",
"childer":[
{
"id": "01_01",
"pId": "01",
"childer":[]
},
{
"id": "01_02",
"pId": "01",
"childer":[
{
"id": "01_02_01",
"pId": "01_02",
"childer":[]
}
]
},
]
},
{
"id": "02",
"pId": "",
"childer":[
{
"id": "02-01",
"pId": "02",
"childer":[]
},
{
"id": "02-02",
"pId": "02",
"childer":[]
},
]

{
"id": "03",
"pId": "",
"childer":[
{
"id": "03_01",
"pId": "03",
"childer":[]
}
]
}

]
...全文
1008 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
2017-11-10
  • 打赏
  • 举报
回复

var json = [
  {
    "id" : "01",
    "pId":""
  }  ,
    {
    "id" : "01_01",
    "pId":"01"
  }  ,
    {
    "id" : "01_02",
    "pId":"01"
  }  ,
      {
    "id" : "01_02_01",
    "pId":"01_02"
  }  ,
  {
    "id" : "02",
    "pId":""
  },
    {
    "id" : "02-01",
    "pId":"02"
  },
      {
    "id" : "02-02",
    "pId":"02"
  },
  {
    "id" : "03",
    "pId":""
  },
  {
    "id" : "03_01",
    "pId":"03"
  }
];
function format(json){
	var ret = [], o = {};

	function add(arr, data){
		var obj = {
			"id": data.id,
			"pId": data.pId,
			"childer": []
		};
		o[data.id] = obj;
		arr.push(obj);
	}

	json.forEach(x => {
		if(o[x.pId]){
			add(o[x.pId].childer, x);
		}else{
			add(ret, x);
		}
	});

	return ret;
}
console.log(format(json));

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧