js 树结构 找到某id的所有同级
时间: 2023-09-13 12:10:13 浏览: 55
如果你想在JavaScript中找到一颗树结构中某个节点的所有同级节点,你可以使用以下方法:
1. 遍历整个树结构,找到当前节点的父节点。
2. 找到父节点的所有子节点,过滤出与当前节点不同的节点,即为所有同级节点。
以下是一个示例代码:
```javascript
function findSiblings(tree, id) {
let siblings = [];
const findNode = (node) => {
if (node.id === id) {
const parentId = node.parentId;
siblings = tree.filter((n) => n.parentId === parentId && n.id !== id);
} else {
node.children && node.children.forEach((child) => findNode(child));
}
};
tree.forEach((node) => findNode(node));
return siblings;
}
```
这个方法中,`tree`是整个树结构,`id`是需要查找同级节点的节点id。函数会遍历整个树结构,找到与`id`匹配的节点,并通过该节点的`parentId`找到父节点,然后过滤出父节点的所有子节点中与当前节点不同的节点,即为所有同级节点。
相关问题
js 树结构找到某id的父级
如果你想在 JavaScript 中找到一棵树结构中某个节点的父节点,你可以使用以下方法:
1. 遍历整个树结构,找到当前节点。
2. 如果当前节点的 id 与目标节点的 id 相同,则返回当前节点的父节点。
3. 否则,遍历当前节点的子节点,递归调用该方法,直到找到目标节点为止。
以下是一个示例代码:
```javascript
function findParent(tree, id) {
let parent = null;
const findNode = (node) => {
if (node.id === id) {
parent = node.parent;
} else {
node.children && node.children.forEach((child) => findNode(child));
}
};
tree.forEach((node) => findNode(node));
return parent;
}
```
这个方法中,`tree` 是整个树结构,`id` 是需要查找父节点的节点 id。函数会遍历整个树结构,找到与 `id` 匹配的节点,并返回其父节点。如果找不到,则返回 `null`。
js 树结构知道id找到该数据
假设你有一棵树结构的数据,并且每个节点都有一个唯一的 id 属性。如果你想要根据一个节点的 id 属性找到该节点的数据,可以使用以下代码:
```javascript
function findNodeById(tree, id) {
if (tree.id === id) {
return tree;
}
for (let child of tree.children || []) {
const node = findNodeById(child, id);
if (node) {
return node;
}
}
return null;
}
```
以上代码会遍历树结构中的每个节点,如果找到了与指定 id 属性相等的节点,就返回该节点的数据;如果遍历完整棵树都没有找到,就返回 null。