js递归获取children的id
时间: 2023-11-21 08:05:42 浏览: 30
可以使用递归函数来实现获取所有子元素的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属性,则不会被包含在返回的数组中。
相关问题
js递归获取树的所有id
可以使用递归函数来获取树的所有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
假设树形数据如下:
```javascript
const treeData = [
{
id: 1,
label: "Node 1",
children: [
{
id: 2,
label: "Node 1-1",
children: [
{
id: 3,
label: "Node 1-1-1",
children: []
},
{
id: 4,
label: "Node 1-1-2",
children: []
}
]
},
{
id: 5,
label: "Node 1-2",
children: []
}
]
},
{
id: 6,
label: "Node 2",
children: [
{
id: 7,
label: "Node 2-1",
children: []
},
{
id: 8,
label: "Node 2-2",
children: []
}
]
}
];
```
可以使用递归的方式获取所有子节点的 `id`,代码如下:
```javascript
function getChildIds(node) {
let ids = [];
for (let child of node.children) {
ids.push(child.id);
ids.push(...getChildIds(child));
}
return ids;
}
// 获取 id 为 1 的节点的所有子节点的 id
const node = treeData.find(node => node.id === 1);
const childIds = getChildIds(node);
console.log(childIds); // [2, 3, 4, 5]
```
上面的代码中,`getChildIds` 函数接受一个节点作为参数,返回该节点的所有子节点的 `id` 组成的数组。对于每个子节点,先将其 `id` 添加到数组中,然后递归调用 `getChildIds` 函数获取其所有子节点的 `id`,将其扁平化后再添加到数组中,最终返回该数组。