数组转树
将input数据格式转换为output数据格式
let input = [{ id: 1, val: '学校', parentId: null },{ id: 2, val: '班级1', parentId: 1 },{ id: 3, val: '班级2', parentId: 1 },{ id: 4, val: '学生1', parentId: 2 },{ id: 5, val: '学生2', parentId: 3 },{ id: 6, val: '学生3', parentId: 3 }] let output = { id: 1, val: '学校', children: [{ id: 2, val: '班级1', children: [ { id: 4, val: '学生1', children: null } ] }, { id: 3, val: '班级2', children: [ { id: 5, val: '学生2', children: null },{ id: 6, val: '学生3', children: null } ] }] }
实现方式
const arrayToTree = (metadata) => { const {id, val} = metadata.find(item => !item.parentId) const tree = { id, val } const transform = (id, metadata) => { let children = [] for(let i = 0; i < metadata.length; i++){ let item = metadata[i] if(id === item.parentId){ let result = children.push({ id: item.id, val: item.val, children: transform(item.id, metadata) }) } } return children.length ? children : null } tree.children = transform(id, metadata) return tree }
以自己现在的努力程度,还没有资格和别人拼天赋