1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| const data = [ {id: 1, name: "1-1",}, {id: 2, name: "2-1",}, {id: 3, name: "3-1",}, {id: 4, name: "1-2", parentId: 1}, {id: 5, name: "1-3", parentId: 1}, {id: 6, name: "2-2", parentId: 2}, {id: 7, name: "2-3", parentId: 2}, {id: 8, name: "2-4", parentId: 7}, ]
const arrayToTree = (data) => { return data.reduce(function (prev, curr, i, arr) { curr.children = arr.filter(item => item.parentId === curr.id) if (!curr.parentId) { prev.push(curr) } return prev; }, []); } const treeData = arrayToTree(data) console.log(JSON.stringify(treeData, null, 2))
|