求教:js递归 树结构输出问题
数据源如:
<!DOCtype html>
<html lang="en-US">
<head>
<title>demo</title>
</head>
<body>
<script>
const json = [
{
"id":4,
"name":"标题1",
"flag":0,
"parentId":1,
"children":[
{
"id":3,
"name":"1-1",
"flag":0,
"parentId":4,
"isLeaf": true,
"children":null
}
]
},
{
"id":5,
"name":"标题2",
"flag":0,
"parentId":1,
"children":[
{
"id":4,
"name":"2-1",
"flag":0,
"parentId":5,
"isLeaf": true,
"children":null
},
{
"id":5,
"name":"2-2",
"flag":0,
"parentId":5,
"checked":true,
"isLeaf": true,
"children":null
}
]
},
{
"id":7,
"name":"标题3",
"flag":0,
"parentId":1,
"children":[
{
"id":6,
"name":"3-1",
"flag":0,
"parentId":7,
"children":[
{
"id": 106,
"name": "3-1-1",
"checked": true,
"isLeaf": true,
"children": null,
}
]
}
]
}
];
function returnSelectedTree(list) {
if (Array.isArray(list) && list.length !== 0) {
list = list.map((item, index) => {
// 哪裏有問題
const children = !item.isLeaf ? item.children.filter(it => it.checked) : [];
if (children.length > 0) {
item = {...item, ...{children: children}};
}
if (!item.isLeaf) {
returnSelectedTree(item.children)
}
return item;
});
return list;
} else {
return false;
}
}
returnSelectedTree(json)
console.log(returnSelectedTree(json));
</script>
</body>
</html>
选中子级别,将其父级输出,如图
选中2-2,输出 标题2的完整树结构,除过2-1;求N层级方法
即:排除未选择项,需要父级完整结构包含选择项。
想通過上面returnSelectedTree方法處理。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可根据自己的业务逻辑添加二次查找时的优化逻辑以减少每次查询时预处理节点的逻辑的O(N)的时间复杂度
试试这个?https://github.com/Lushenggan...
这个问题可以参考我的博文:过滤/筛选树节点 - 第 2 节
参考写出来的代码: