数组转树形可以使用递归的方式实现,树形转数组可以使用深度优先遍历的方式实现。以下是对应的代码实现:\n\n数组转树形:\n\njavascript\nfunction arrayToTree(arr, parentId) {\n const tree = [];\n \n arr.forEach(item => {\n if (item.parentId === parentId) {\n const children = arrayToTree(arr, item.id);\n if (children.length > 0) {\n item.children = children;\n }\n tree.push(item);\n }\n });\n \n return tree;\n}\n\n\n树形转数组:\n\njavascript\nfunction treeToArray(tree, parentId) {\n const arr = [];\n \n tree.forEach(item => {\n const { id, children } = item;\n arr.push({\n id,\n parentId,\n });\n \n if (children && children.length > 0) {\n const childrenArr = treeToArray(children, id);\n arr.push(...childrenArr);\n }\n });\n \n return arr;\n}\n\n\n使用示例:\n\njavascript\nconst arr = [\n { id: 1, name: 'node1', parentId: null },\n { id: 2, name: 'node2', parentId: 1 },\n { id: 3, name: 'node3', parentId: 1 },\n { id: 4, name: 'node4', parentId: 2 },\n { id: 5, name: 'node5', parentId: 3 },\n];\n\nconst tree = arrayToTree(arr, null);\nconsole.log(JSON.stringify(tree));\n\nconst arr2 = treeToArray(tree, null);\nconsole.log(JSON.stringify(arr2));\n\n\n输出:\n\n\n[\n {\n "id": 1,\n "name": "node1",\n "parentId": null,\n "children": [\n {\n "id": 2,\n "name": "node2",\n "parentId": 1,\n "children": [\n {\n "id": 4,\n "parentId": 2\n }\n ]\n },\n {\n "id": 3,\n "name": "node3",\n "parentId": 1,\n "children": [\n {\n "id": 5,\n "parentId": 3\n }\n ]\n }\n ]\n }\n]\n[\n {\n "id": 1,\n "parentId": null\n },\n {\n "id": 2,\n "parentId": 1\n },\n {\n "id": 4,\n "parentId": 2\n },\n {\n "id": 3,\n "parentId": 1\n },\n {\n "id": 5,\n "parentId": 3\n }\n]\n

JavaScript 数组转树形和树形转数组代码实现 - 递归与深度优先遍历

原文地址: https://www.cveoy.top/t/topic/qvWS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录