js 树形for循环找出当前选中节点父级不为空
时间: 2024-03-06 21:47:05 浏览: 59
假设你有一个树形结构的数据,每个节点都有一个 `id` 和 `parentId` 属性,可以使用以下代码找到当前选中节点的父节点:
```javascript
function findParentNode(nodes, selectedNode) {
if (!selectedNode.parentId) {
return null; // 如果当前选中节点没有父节点,直接返回 null
}
for (let i = 0; i < nodes.length; i++) {
const node = nodes[i];
if (node.id === selectedNode.parentId) {
return node; // 如果找到了当前选中节点的父节点,直接返回
}
if (node.children) {
const parentNode = findParentNode(node.children, selectedNode);
if (parentNode) {
return parentNode; // 如果在当前节点的子节点中找到了当前选中节点的父节点,直接返回
}
}
}
return null; // 如果在整个树形结构中都没有找到当前选中节点的父节点,返回 null
}
```
使用方法:
```javascript
const nodes = [
{
id: 1,
parentId: null,
children: [
{
id: 2,
parentId: 1,
children: [
{
id: 4,
parentId: 2,
children: []
},
{
id: 5,
parentId: 2,
children: []
}
]
},
{
id: 3,
parentId: 1,
children: []
}
]
}
];
const selectedNode = { id: 4, parentId: 2 };
const parentNode = findParentNode(nodes, selectedNode);
console.log(parentNode); // 输出 { id: 2, parentId: 1, children: [ { id: 4, parentId: 2, children: [] }, { id: 5, parentId: 2, children: [] } ] }
```
阅读全文