js获取树形结构中所有子节点的集合,有些children为null
时间: 2024-12-30 09:41:33 浏览: 10
在JavaScript中,如果你有一个树形数据结构,比如一个数组嵌套数组表示的树,其中一些子节点可能是`null`,你可以使用递归的方式来获取所有非空子节点。以下是一个简单的函数示例:
```javascript
function getAllChildren(tree) {
let childrenNodes = [];
function traverse(node) {
if (node !== null && Array.isArray(node)) { // 检查是否是数组且不为空
node.forEach(child => {
childrenNodes.push(child);
if (child.children && child.children.length > 0) { // 如果有子节点继续递归
traverse(child.children);
}
});
}
}
traverse(tree);
return childrenNodes;
}
// 使用示例
let treeData = [
{ id: 1, name: 'A', children: [null, { id: 2, name: 'B', children: [{ id: 3, name: 'C' }] }] },
{ id: 4, name: 'D', children: [] }
];
console.log(getAllChildren(treeData)); // 输出:[ { id: 2, name: 'B', children: [ { id: 3, name: 'C' } ] }, { id: 4, name: 'D' } ]
```
在这个例子中,`getAllChildren`函数接收一个树形数据作为输入,然后通过内部的`traverse`函数递归地收集所有的非空子节点。
阅读全文