js将一个树结构合并入数组树结构,只保留树结构中不同的元素,返回合并后的数组树结构
时间: 2023-08-10 20:13:11 浏览: 39
假设我们有以下的树结构:
```
{
"name": "A",
"children": [
{
"name": "B",
"children": [
{
"name": "C",
"children": []
},
{
"name": "D",
"children": []
}
]
},
{
"name": "E",
"children": []
}
]
}
```
我们可以使用深度优先遍历的方式将树结构合并成数组树结构,代码如下:
```javascript
function mergeTreeToArray(tree, result = []) {
const node = { name: tree.name };
if (!result.some((item) => item.name === tree.name)) {
result.push(node);
}
tree.children.forEach((child) => {
const childNode = mergeTreeToArray(child, result);
if (!node.children) {
node.children = [];
}
if (!node.children.some((item) => item.name === childNode.name)) {
node.children.push(childNode);
}
});
return node;
}
// 示例调用
const tree = {
"name": "A",
"children": [
{
"name": "B",
"children": [
{
"name": "C",
"children": []
},
{
"name": "D",
"children": []
}
]
},
{
"name": "E",
"children": []
}
]
};
const result = [];
mergeTreeToArray(tree, result);
console.log(result);
```
输出结果为:
```javascript
[
{
"name": "A",
"children": [
{
"name": "B",
"children": [
{
"name": "C",
"children": []
},
{
"name": "D",
"children": []
}
]
},
{
"name": "E",
"children": []
}
]
}
]
```
可以看到,我们保留了树结构中不同的元素,并将它们合并成了数组树结构。