JavaScript树形结构数据删除 - 递归方法实现高效过滤
要删除树形结构中不符合条件的数据,可以使用递归的方式遍历树,并在遍历过程中判断每个节点是否符合条件。如果节点符合条件,则保留该节点及其子节点;如果节点不符合条件,则删除该节点及其子节点。\n\n以下是一个示例代码,演示如何删除树形结构中不符合条件的数据:\n\njavascript\nfunction deleteNode(node, condition) {\n if (!node) return null; // 递归终止条件\n\n // 判断当前节点是否符合条件\n if (condition(node)) {\n return {\n ...node, // 保留当前节点\n children: node.children.map(child => deleteNode(child, condition)).filter(child => child) // 递归处理子节点\n };\n } else {\n return null; // 不符合条件,返回null表示删除该节点\n }\n}\n\n// 示例数据\nconst tree = {\n id: 1,\n children: [\n {\n id: 2,\n children: [\n {\n id: 3,\n children: []\n },\n {\n id: 4,\n children: []\n }\n ]\n },\n {\n id: 5,\n children: [\n {\n id: 6,\n children: []\n },\n {\n id: 7,\n children: []\n }\n ]\n }\n ]\n};\n\n// 删除id为2的节点及其子节点\nconst newTree = deleteNode(tree, node => node.id === 2);\n\nconsole.log(newTree);\n\n\n在上述示例中,deleteNode函数接收两个参数:node表示当前节点,condition表示判断节点是否符合条件的函数。如果节点符合条件,则保留该节点及其子节点,否则返回null表示删除该节点。\n\n在示例代码中,我们删除了id为2的节点及其子节点,最后输出的newTree变量即为删除后的树形结构数据。
原文地址: https://www.cveoy.top/t/topic/p4N1 著作权归作者所有。请勿转载和采集!