Js对象转树形结构

项目中常见的一种数据处理的需求,就是将后端返回的json对象转成树形结构。

        let data = [
		{ id: 1, parent: null, text: '菜单1' },
		{ id: 11, parent: 1, text: '菜单1-1' },
		{ id: 12, parent: 1, text: '菜单1-2' },
		{ id: 2, parent: null, text: '菜单2' },
		{ id: 21, parent: 2, text: '菜单2-1' },
		{ id: 22, parent: 2, text: '菜单2-2' }
	]

  

	/*
	1、先遍历源数据,根据parent父级节点获取到一级菜单list
	2、遍历list,接着递归(传入子级的parent和children属性)
	3、判断如果子级菜单中没有children就删除该属性
	*/
	function jsonTree(data, p, list) {
		for (let item of data) {
			if (item.parent == p) list.push(item);
		}
		for (let i of list) {
			i.children = [];
			jsonTree(data, i.id, i.children);
			if(i.children.length == 0) delete i.children;
		}
		return list;
	}
	console.log(jsonTree(data, null, []));

  

 

posted @ 2022-04-08 22:00  紫诺花开  阅读(651)  评论(0编辑  收藏  举报