js 中去掉树结构三级重复的 子结构数据
时间: 2024-10-16 16:07:48 浏览: 22
在 JavaScript 中,如果想要从树形结构的数据中去除三级重复的子结构,通常会使用递归的方式来遍历并整理数据。这里有一个简单的例子,假设我们有一个嵌套的对象数组表示树形结构:
```javascript
let tree = [
{ id: 1, name: 'A', children: [{ id: 2, name: 'B' }, { id: 3, name: 'C', children: [{ id: 4, name: 'D', children: [] }] }] },
{ id: 5, name: 'E', children: [] }
];
```
我们可以编写一个函数来去除三级重复:
```javascript
function removeRedundantData(tree, depth = 0) {
return tree.map(item => {
let newItem = { ...item };
// 如果达到三级深度,直接删除子结构
if (depth === 3) {
delete newItem.children;
} else {
// 深度递增,并检查当前节点是否已经在结果中
let foundItem = removeRedundantData(newItem.children, depth + 1).find(item => item.id === newItem.id);
if (!foundItem) {
newItem.children = removeRedundantData(newItem.children, depth + 1); // 遍历并替换子结构
} else {
// 如果找到重复项,仅保留第一个
newItem.children = [];
}
}
return newItem;
});
}
let cleanedTree = removeRedundantData(tree);
console.log(cleanedTree);
阅读全文