js有一个id组成的数组arr,获取一个数组树结构中id一样的节点,组成一个新的数组树结构,arr中的元素必定是数组树结构中的id
时间: 2024-02-11 21:06:37 浏览: 83
可以使用递归的方式遍历整个数组树结构,当遍历到某个节点时,如果该节点的id在给定的arr数组中出现,则将该节点加入到新的数组树结构中,并且以该节点为根节点,递归遍历它的子节点,将子节点中id在arr数组中出现的节点也加入到新的数组树结构中。以下是一个示例代码:
```javascript
function getNodeById(node, id) {
if (node.id === id) {
return node;
}
for (let i = 0; i < node.children.length; i++) {
const childNode = getNodeById(node.children[i], id);
if (childNode) {
return childNode;
}
}
return null;
}
function getTreeNodesById(tree, arr) {
const result = [];
function traverse(node) {
if (arr.includes(node.id)) {
const newNode = {...node, children: []};
result.push(newNode);
for (let i = 0; i < node.children.length; i++) {
const childNode = getNodeById(node.children[i], arr[i]);
if (childNode) {
traverse(childNode);
newNode.children.push(childNode);
}
}
}
}
traverse(tree);
return result;
}
```
其中,getNodeById函数用于在数组树结构中查找某个id对应的节点,getTreeNodesById函数用于遍历整个数组树结构,找到其中id在arr数组中出现的节点,并将其以及它的子节点加入到新的数组树结构中。
阅读全文