遞歸 樹形結構 級聯組件數據處理

// 原理: 先給根節點找子,再給子找子,一次類推(某個節點一直找到盡頭纔開啓下一個節點)
好比: 
    根節點是:爺爺 
    子節點有:叔叔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))
相關文章
相關標籤/搜索