js 将一个tree 数据与另一个tree数据同级合并,返回一个新的tree
时间: 2024-02-11 16:06:13 浏览: 112
假设您的两个树形数据结构如下:
```javascript
const tree1 = [{
id: '1',
label: 'Node 1',
children: [{
id: '2',
label: 'Node 1-1',
children: []
}]
}];
const tree2 = [{
id: '3',
label: 'Node 2',
children: []
}];
```
您可以使用递归的方式将这两个树形数据合并为一个同级的树形结构,并返回一个新的树形数据。以下是一个示例代码:
```javascript
function mergeTrees(tree1, tree2) {
const newTree = [...tree1]; // 复制tree1的副本
// 遍历tree2中的每个节点,将其添加到newTree中
for (let i = 0; i < tree2.length; i++) {
const node = tree2[i];
// 在newTree中查找与当前节点id相同的节点
const sameNode = newTree.find(item => item.id === node.id);
if (sameNode) {
// 如果在newTree中找到了同id的节点,将其子节点合并
sameNode.children = mergeTrees(sameNode.children, node.children);
} else {
// 否则直接将节点添加到newTree中
newTree.push(node);
}
}
return newTree;
}
const newTree = mergeTrees(tree1, tree2);
console.log(newTree);
```
上述代码中,`mergeTrees`函数接收两个参数,分别是要合并的两个树形数据。函数首先复制`tree1`的副本作为新的树形数据`newTree`,然后遍历`tree2`中的每个节点,然后在`newTree`中查找与当前节点id相同的节点。如果在`newTree`中找到了同id的节点,将其子节点合并;否则直接将节点添加到`newTree`中。最终,`newTree`中的节点已经全部合并完毕,函数返回新的树形数据`newTree`。
希望这个示例代码能够帮助到您。
阅读全文