javascript递归获取所有pid
时间: 2023-08-04 21:09:51 浏览: 53
你可以使用递归函数来获取所有的pid。假设你有一个包含id和pid的数据结构,你可以按照以下方式实现递归函数来获取所有的pid:
```javascript
function getAllPids(data, parentId) {
const pids = [];
for (const item of data) {
if (item.pid === parentId) {
pids.push(item.id);
pids.push(...getAllPids(data, item.id));
}
}
return pids;
}
```
这个函数接受两个参数,`data` 是你的数据结构,`parentId` 是当前节点的父节点id。它首先创建一个空数组 `pids` 来存储所有的pid。
然后,它遍历数据结构中的每个元素。如果元素的 `pid` 等于 `parentId`,则将该元素的 `id` 添加到 `pids` 数组中,并递归调用 `getAllPids` 函数来获取子节点的pid,并将它们添加到 `pids` 数组中。
最后,返回 `pids` 数组,其中包含了所有的pid。
你可以使用如下方式调用这个函数:
```javascript
const data = [
{ id: 1, pid: 0 },
{ id: 2, pid: 1 },
{ id: 3, pid: 1 },
{ id: 4, pid: 2 },
{ id: 5, pid: 3 },
];
const allPids = getAllPids(data, 0);
console.log(allPids); // 输出 [1, 2, 4, 3, 5]
```
这里的 `data` 是一个包含了id和pid的示例数据结构。通过调用 `getAllPids(data, 0)`,你将会得到所有的pid数组。