写一个递归树形转平铺js函数
时间: 2023-05-16 17:06:02 浏览: 62
当然可以,以下是一个递归树形转平铺的 JavaScript 函数:
function flattenTree(tree) {
let result = [];
function traverse(node) {
result.push(node);
if (node.children) {
node.children.forEach(child => traverse(child));
}
}
traverse(tree);
return result;
}
这个函数接收一个树形结构的对象作为参数,返回一个扁平化的数组。函数通过递归遍历树形结构,将每个节点都添加到结果数组中,最终返回结果数组。
相关问题
写一个递归树形转平铺函数
好的,以下是递归树形转平铺的函数:
```python
def flatten_tree(tree):
if not tree:
return []
if isinstance(tree, list):
return [item for sublist in tree for item in flatten_tree(sublist)]
return [tree]
```
这个函数可以将一个嵌套的树形结构转换为一个扁平的列表。
生成树形菜单递归js函数
以下是一个生成树形菜单递归JS函数的示例:
```javascript
function createTreeMenu(data, parentId) {
var tree = [];
for (var i = 0; i < data.length; i++) {
if (data[i].parent_id == parentId) {
var node = {
id: data[i].id,
text: data[i].name,
children: createTreeMenu(data, data[i].id)
};
tree.push(node);
}
}
return tree;
}
```
该函数接受两个参数:
1. data:一个数组,包含所有的菜单项;
2. parentId:当前菜单项的父级 ID,如果传入 `null`,则表示生成整个树形菜单。
函数首先创建一个空的数组 `tree`,然后遍历 `data` 数组中的每个元素。如果当前元素的 `parent_id` 等于传入的 `parentId`,则将该元素添加到数组 `tree` 中,并递归调用 `createTreeMenu` 函数,将当前元素的 `id` 作为新的 `parentId`,生成该节点的子菜单项。
最后,函数将生成的树形菜单返回。