首页 > 其他分享 >js 统计树形组织架构人员数量

js 统计树形组织架构人员数量

时间:2024-11-14 11:40:58浏览次数:1  
标签:node 架构 childList item 树形 parentId js type id

组织架构树形数据,且存在一个人员在多公司/或部门计数重复问题

// 统计组织架构内人员数量
const countNodesProperty = (treeItemData, propertyName, propertyValue) => {
    let count = 0
    const userArr = []
    const traverse = nodes => {
        nodes.forEach(node => {
            if (node[propertyName] === propertyValue) {
                // 当前公司/部门内无此人员时,再计数。解决人员在多公司/部门时计数重复问题
                if (!userArr.find(item => item.id === node.id)) {
                    count++
                }
                userArr.push(node)
            }
            if (node.childList && node.childList.length) {
                traverse(node.childList)
            }
        })
    }
    traverse([{ ...treeItemData }])
    return count
}
// 操作树形数据
const handleTreeData() {
    // 组织架构树形数据
    const treeData= [
        {
            id: '1',
            name: '总公司',
            type: '1', // 1 公司, 2 部门,3 人员
            parentId: '0',
            childList: [
                {
                    id: '2',
                    name: '上海公司',
                    type: '1',
                    parentId: '1',
                    childList: [
                        {
                            id: '2-1',
                            name: '部门1',
                            type: '2',
                            parentId: '2',
                            childList: [
                                id: '2-1-1',
                                name: '张三',
                                type: '3',
                                parentId: '2-1',
                            ]
                        },
                        {
                            id: '2-2',
                            name: '部门2',
                            type: '2',
                            parentId: '2',
                            childList: [
                                id: '2-1-1',
                                name: '张三',
                                type: '3',
                                parentId: '2-2',
                            ]
                        },
                    ]
                }
            ]
        }
    ]
    const handeData = data => {
        data.forEach(item => {
            if (item.type !== 3) {
                item.count = countNodesProperty(item, 'type', 3)
            }
            if (item.childList && item.childList.length) {
                handeData(item.childList)
            }
        })
    }
    handeData(treeData)
}

 

标签:node,架构,childList,item,树形,parentId,js,type,id
From: https://www.cnblogs.com/hong1/p/18545687

相关文章

  • 神经网络架构参考:2-1 卷积篇
    提示词:给出{xxx}的网络结构表格,包含层名称、类型、输入大小(HWC),输出大小(HWC)、核尺寸、步长、参数数量AlexNet层名称类型输入大小(HWC)输出大小(HWC)核尺寸步长参数数量输入层输入227x227x3---0Conv1卷积层227x227x355x55x9611x114961111*3+96=34......
  • JS之Date时间处理
     初始化当前时间://1.使用构造函数方式varnewDate=newDate()//2.使用函数方式vardate=Date()//返回的是一个Date对象console.log(newDate)//返回的是表示当前时间的字符串console.log(date);初始化指定时间:通过Date对象初始化时间为指定的年月日可......
  • MySQL 中常见的几种高可用架构部署方案
    MySQL中的集群部署方案前言MySQLReplicationInnoDBClusterInnoDBClusterSetInnoDBReplicaSetMMMMHAGaleraClusterMySQLClusterMySQLFabric参考MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication 是......
  • Nodejs保姆级安装教程(超详细)
    目录一、安装环境二、安装步骤三、验证安装四、修改全局模块下载路径 五、更换npm源为淘宝镜像总结一、安装环境本教程演示的环境:win1064位node.js下载: https://pan.quark.cn/s/6cc0cf8ba5be二、安装步骤1、双击安装包,一直点击下一步。2、点击change按钮......
  • 软考之面向服务架构SOA
    面向服务架构(SOA)与单体架构的比较一、引言在软件开发的历史进程中,架构设计一直是影响系统性能、可维护性和扩展性的关键因素。单体架构和面向服务架构(Service-OrientedArchitecture,SOA)是两种常见的架构设计模式,分别代表了不同的设计理念和实践。单体架构以其简单和直观......
  • 基于nodejs+vue中小型酒店管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于酒店管理系统的研究,现有研究主要以大型酒店或连锁酒店为主,专门针对中小型酒店管理系统的研究较少。在国内外,大型酒店由于资源丰富、管理复杂,吸引了......
  • 基于nodejs+vue中小型企业工资管理系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于工资管理系统的研究,现有研究多以大型企业或通用型企业管理系统为主,专门针对中小型企业工资管理系统的研究较少。在国内外,大型企业的工资管理系统往......
  • node.js毕设通达学院竞赛信息管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于高校竞赛信息管理的研究,现有研究主要集中在竞赛活动的组织与管理、学生参与竞赛的效果评估等方面。专门针对高校竞赛信息管理系统的开发与应用的研......
  • node.js毕设校园图书借阅系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着信息技术的快速发展,图书馆管理系统也在不断更新和升级。传统的图书借阅方式已经无法满足现代高校师生对图书资源的需求。近年来,国内外学者对图书借......
  • Node.js v22.6.0新特性:支持 TypeScript 直接运行!
    Node.jsv22.6.0版本已经发布,并且带来了一个开发者们期待已久的新特性——直接运行TypeScript(TS)文件的能力!版本更新亮点Node.jsv22.6.0版本通过--experimental-strip-types标志,实现了对TypeScript的实验性支持。这意味着开发者们现在可以在Node.js环境中直接执行......