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