当前位置: 首页 > 知识库问答 >
问题:

javascript - js树状结构树组递归并修改状态?

左丘元徽
2023-08-17
const arr = [{            "id": "BC",            "selected": true,            "partiallySelected": false,            "count": 175400,            "childrens": [{                "id": "BC-SRV",                "selected": false,                "partiallySelected": false,                "count": 22609,                "childrens": [{                    "id": "BC-SRV-COM",                    "selected": false,                    "partiallySelected": false,                    "count": 2304,                    "childrens": [{                        "id": "BC-SRV-COM-FTP",                        "selected": false,                        "partiallySelected": false,                        "count": 187,                        "childrens":[]                    }, {                        "id": "BC-SRV-COM-TEL",                        "selected": false,                        "partiallySelected": false,                        "count": 137,                        "childrens":[]                    }, {                        "id": "BC-SRV-COM-MSX",                        "selected": false,                        "partiallySelected": false,                        "count": 222,                        "childrens":[]                    }, {                         "id": "BC-SRV-COM-QQQ",                         "selected": false,                         "partiallySelected": false,                         "count": 156,                         "childrens":[]                     }]                }, {                    "id": "BC-SRV-BR",                    "selected": false,                    "partiallySelected": false,                    "count": 2093,                    "childrens": []                }, {                    "id": "BC-SRV-GBT",                    "selected": false,                    "partiallySelected": false,                    "count": 2133,                    "childrens": []                }]            }, {                "id": "BC-DB",                "selected": false,                "partiallySelected": false,                "count": 20388,                "childrens":[]            }, {                "id": "BC-SYB",                "selected": true,                "partiallySelected": false,                "count": 13764,                "childrens":[]            }, {                 "id": "BC-SYY",                 "selected": true,                 "partiallySelected": true,                 "count": 22610,                 "childrens":[]             }]        }];

递归树组,父节点selectedtruepartiallySelectedfasle的时候,所有子节点childrens下的节点的selected则也修改为true
syncChildrenStatus(arr)
希望得到的

newArr = [{            "id": "BC",            "selected": true,            "partiallySelected": false,            "count": 175400,            "childrens": [{                "id": "BC-SRV",                "selected": true,                "partiallySelected": false,                "count": 22609,                "childrens": [{                    "id": "BC-SRV-COM",                    "selected": true,                    "partiallySelected": false,                    "count": 2304,                    "childrens": [{                        "id": "BC-SRV-COM-FTP",                        "selected": true,                        "partiallySelected": false,                        "count": 187,                        "childrens":[]                    }, {                        "id": "BC-SRV-COM-TEL",                        "selected": true,                        "partiallySelected": false,                        "count": 137,                        "childrens":[]                    }, {                        "id": "BC-SRV-COM-MSX",                        "selected": true,                        "partiallySelected": false,                        "count": 222,                        "childrens":[]                    }, {                         "id": "BC-SRV-COM-QQQ",                         "selected": true,                         "partiallySelected": false,                         "count": 156,                         "childrens":[]                     }]                }, {                    "id": "BC-SRV-BR",                    "selected": true,                    "partiallySelected": false,                    "count": 2093,                    "childrens": []                }, {                    "id": "BC-SRV-GBT",                    "selected": true,                    "partiallySelected": false,                    "count": 2133,                    "childrens": []                }]            }, {                "id": "BC-DB",                "selected": true,                "partiallySelected": false,                "count": 20388,                "childrens":[]            }, {                "id": "BC-SYB",                "selected": true,                "partiallySelected": false,                "count": 13764,                "childrens":[]            }, {                 "id": "BC-SYY",                 "selected": true,                 "partiallySelected": true,                 "count": 22610,                 "childrens":[]             }]        }]

共有1个答案

谢旻
2023-08-17
function syncChildrenStatus(arr) {  return arr.map(v => ({    ...v,    childrens: v.selected && !v.partiallySelected ? JSON.parse(JSON.stringify(v.childrens),(k,v) => k === 'selected' ? true : v) : syncChildrenStatus(v.childrens)  }))}
 类似资料:
  • 问题内容: 我有一个将位置链接在一起的数据库表;一个位置可以在一个位置,也可以在另一个位置内。 这是深入探讨MySQL / PHP的深度: 在给定父级位置的情况下,如何使用MySQL如何获得其所有后代位置,无论深度如何? 问题答案: mysql.com上有 一篇漂亮的文章 ,概述了管理分层数据的各种方法。我认为它为您的问题提供了完整的解决方案,并显示了各种不太简单但较快的方法(例如嵌套集)。

  • 我正在尝试在UI上显示树结构。但是得到一个错误。 无法绑定到“target”,因为它不是“i”的已知属性。(“v*ngFor=”让文件项 虽然这个属性存在于我的json文件中,如下所示: 我的html文件如下: 我无法找出这次失败的原因。我已经尝试了所有可能的条件,我可以申请使它工作。请帮我解决这个问题

  • 本文向大家介绍PHP递归实现层级树状展开,包括了PHP递归实现层级树状展开的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: 以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

  • 题目描述 希望将上面数组用js转化成下面格式,请问如何实现呢

  • 翻到祖师爷代码,发现树结构的数据是后端通过递归去生成的,效率非常低,请问有什么方法可以优化吗?

  • 本文向大家介绍数据结构 二叉树的递归与非递归,包括了数据结构 二叉树的递归与非递归的使用技巧和注意事项,需要的朋友参考一下 数据结构 二叉树的递归与非递归 实例代码:  先序遍历(递归法)   后序遍历      感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!