树形结构数据中,js获取指定id的父级id
时间: 2023-05-15 11:06:44 浏览: 621
可以通过递归遍历整个树形结构,找到指定id的节点,并返回其父节点的id。具体实现可以参考以下代码:
function getParentId(tree, id) {
for (var i = 0; i < tree.length; i++) {
var node = tree[i];
if (node.id === id) {
return node.parentId;
} else if (node.children) {
var parentId = getParentId(node.children, id);
if (parentId) {
return parentId;
}
}
}
return null;
}
其中,tree是树形结构数据,id是要查找的节点id。如果找到了指定id的节点,则返回其父节点的id,否则返回null。
相关问题
JS实现树形结构获取父级ID
假设树形结构数据如下:
```javascript
var treeData = [
{
id: 1,
text: 'Node 1',
children: [
{
id: 2,
text: 'Node 1.1',
children: [
{
id: 3,
text: 'Node 1.1.1'
}
]
},
{
id: 4,
text: 'Node 1.2'
}
]
},
{
id: 5,
text: 'Node 2',
children: [
{
id: 6,
text: 'Node 2.1',
children: [
{
id: 7,
text: 'Node 2.1.1'
},
{
id: 8,
text: 'Node 2.1.2'
}
]
}
]
}
];
```
如果要获取某个节点的父级 ID,可以通过递归遍历树形结构来实现,示例代码如下:
```javascript
function getParentId(treeData, nodeId) {
for (var i = 0; i < treeData.length; i++) {
var node = treeData[i];
if (node.id === nodeId) {
return null; // 根节点没有父级
}
if (node.children && node.children.length > 0) {
for (var j = 0; j < node.children.length; j++) {
var childNode = node.children[j];
if (childNode.id === nodeId) {
return node.id; // 返回父级 ID
} else if (childNode.children && childNode.children.length > 0) {
var parentId = getParentId(childNode.children, nodeId);
if (parentId !== null) {
return parentId;
}
}
}
}
}
return null; // 没有找到节点
}
// 示例:获取 id 为 3 的节点的父级 ID
var parentId = getParentId(treeData, 3);
console.log(parentId); // 2
```
上述代码中,`getParentId` 函数接收两个参数:树形结构数据和要查找的节点 ID。函数首先遍历树形结构数据,找到对应的节点,如果该节点是根节点,则返回 `null`;如果该节点是子节点,则返回其父级节点的 ID。如果该节点既不是根节点也不是子节点,则递归遍历该节点的子节点,直到找到对应的节点或遍历完整个树形结构。如果没有找到对应的节点,则返回 `null`。
js 树形结构数据过滤 保留父级和子集
你可以使用递归来过滤树形结构的数据,保留父级和子集。以下是一个示例代码:
```javascript
function filterTreeData(data, parentId) {
const filteredData = [];
for (let i = 0; i < data.length; i++) {
const node = data[i];
// 如果节点的父级ID与指定的父级ID匹配,则保留该节点及其子集
if (node.parentId === parentId) {
const newNode = { ...node };
// 递归过滤子集
newNode.children = filterTreeData(data, node.id);
filteredData.push(newNode);
}
}
return filteredData;
}
```
你可以将你的树形结构数据作为参数传递给 `filterTreeData` 函数,并指定要保留的父级ID。函数将返回一个过滤后的树形结构数据,其中包含指定父级及其子集。
请注意,上述代码是一个简单示例,前提是你的树形结构数据具有 `id` 和 `parentId` 字段来表示节点之间的关系。你可能需要根据你的实际数据结构进行适当的修改。
阅读全文