难受就摸头盖骨

递归 树形结构 级联组件数据处理

// 原理: 先给根节点找子,再给子找子,以此类推(某个节点一直找到尽头才开启下一个节点)
比如: 
    根节点是:爷爷 
    子节点有:叔叔1, 叔叔2

方法:先找爷爷的子节点,即叔叔1和叔叔2,但是在找叔叔2前,先把叔叔1的整个家族找全了,再去找叔叔2的家族。
示例:
	let allList = [
		{
			id: 1,
			pid: 0,
			name: '老祖宗'
		},
		{
			id: 2,
			pid: 1,
			name: '爷爷1'
		},
		{
			id: 3,
			pid: 1,
			name: '爷爷2'
		},
		{
			id: 4,
			pid: 2,
			name: '爸爸1'
		},
		{
			id: 5,
			pid: 3,
			name: '爸爸2'
		},
		{
			id: 6,
			pid: 5,
			name: '儿子'
		}
	];
	
	// 获取根节点
	let root = allList.find(item => item.pid === 0);
	console.log('根节点', root)
	function toTree (obj) {
		// 给该节点创建一个children属性
		obj.children = [];
		allList.forEach(item => {
			// 给该节点找"直接"的子级
			if (item.pid === obj.id) {
				obj.children.push(item);
				// 给该节点再找"直接"的子级(找全该节点的家族)
				toTree(item)
			};
		});
		return obj;
	}
	console.log('输出', toTree(root))

  

posted @ 2019-11-05 17:03  longpanda_怪怪哉  阅读(353)  评论(0编辑  收藏  举报
下定决心了,要把写不出代码就摸后脑勺的习惯给改了! 如果可以~单身待解救~~