树结构

79 阅读1分钟
tree() {
			var list = [{
				id: 1,
				name: '超级管理',
				parent_id: 0
			}, {
				id: 2,
				name: '用户管理',
				parent_id: 1
			}, {
				id: 3,
				name: '部门管理',
				parent_id: 1

			},
			{
				id: 4,
				name: '日志管理',
				parent_id: 1

			},
			{
				id: 5,
				name: '操作用户',
				parent_id: 2

			},
			{
				id: 6,
				name: '查看用户',
				parent_id: 2

			},
			{
				id: 7,
				name: '用户新增',
				parent_id: 5

			},
			{
				id: 8,
				name: '用户删除',
				parent_id: 5

			}]
			getTree(list, 0)
			function getTree(list, parentId) {
				const items = {}
				for (let i = 0; i < list.length; i++) {
					const key = list[i].parent_id
					if (items[key]) {
						items[key].push(list[i])
					} else {
						items[key] = []
						items[key].push(list[i])
					}
				}
				console.log(items)
				const res = formatter(items, 0)
				console.log(res)
			}
			// 递归格式化每个节点
			function formatter(items, parentId) {
				const result = []
				if (!items[parentId]) {
					return result
				}
				for (const t of items[parentId]) {
					console.log('t:', t)
					t.child = formatter(items, t.id)
					result.push(t)
				}
				return result
			}
		}