js递归获取树的所有id
时间: 2023-05-21 22:02:48 浏览: 945
可以使用递归函数来获取树的所有id,具体实现如下:
```javascript
function getAllIds(tree) {
var ids = [];
if (tree.id) {
ids.push(tree.id);
}
if (tree.children && tree.children.length > 0) {
for (var i = 0; i < tree.children.length; i++) {
ids = ids.concat(getAllIds(tree.children[i]));
}
}
return ids;
}
```
其中,tree是树的根节点,ids是存储所有id的数组。如果根节点有id,则将其加入ids数组中;如果根节点有子节点,则递归遍历每个子节点,将其id加入ids数组中。最后返回ids数组即可。
相关问题
js递归获取children的id
可以使用递归函数来实现获取所有子元素的id。具体实现如下:
```javascript
function getAllChildIds(element) {
let ids = [];
// 获取当前元素的id
let id = element.getAttribute('id');
if (id) {
ids.push(id);
}
// 递归获取所有子元素的id
let children = element.children;
for (let i = 0; i < children.length; i++) {
ids = ids.concat(getAllChildIds(children[i]));
}
return ids;
}
```
使用方法:
```javascript
// 获取body元素下所有子元素的id
let ids = getAllChildIds(document.body);
console.log(ids);
```
注意:如果元素没有id属性,则不会被包含在返回的数组中。
javascript递归获取所有pid
你可以使用递归函数来获取所有的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数组。
阅读全文