码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 条件判断的优化


    条件判断不外乎是“与“”或“”非”的排列组合,其中“与”条件得参与“与”操作得每一项都要满足才是真,只要有一条不满足就为假,而“或”操作只要有一项参与“或”操作得项为真,结果就为真。
    javascript里的&&和||是“短路运算符”,如果&&运算符的前面的运算结果为false,则不会再去计算&&后面的操作;如果||运算符前面的运算结果为true,则不去再去计算||后面的操作。
    这样可以根据具体情况,调整运算的先后顺序,使得计算量最少。
    比如有这样一个场景,有一个应用对企业的某些特定组织下的领导和员工以及某些特定项目组的负责人和成员开放,当然每人进去会根据其角色获得不同权限。需要先判断该用户是否有访问该应用的权限。
    一般是这样设计

    matchuser=orgs.find(item=>( item.projleaders.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||orgs.find(item=>( item.projmembers.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||projs.find(item=>( item.projleaders.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||jprojs.find(item=>( item.projmembers.find(itm=>(itm.userid==args.userid))!=undefined ));
    
    

    如果该企业的组织人员比较多,而项目组人员较少,那么可以考虑改一下顺序,调整 为:

    matchuser=projs.find(item=>( item.projleaders.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||jprojs.find(item=>( item.projmembers.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||orgs.find(item=>( item.projleaders.find(itm=>(itm.userid==args.userid))!=undefined ))
    	||orgs.find(item=>( item.projmembers.find(itm=>(itm.userid==args.userid))!=undefined ));
    

    这样非组织人员匹配效率就很高,而非项目人员匹配效率降低的也不明显。
    当然具体深入讨论的话,还有各种情况的概率分布需要考虑到。
    原则就是能尽量能抄近路得到结果,避免多的计算量。

  • 相关阅读:
    新手怎么使用GitHub?
    Java真过饱和了吗?现在学Java迟了?
    【3568开发板教程上新】Android11移植开发教程升级来袭!
    【题解】PAT 1018 Public Bike Management
    AI技术崛起:数据可视化之路更近
    如何借助边缘智能网关打造智慧城市便民驿站
    TMI4054H锂电池充电管理IC
    Kubernetes: kube-controller-manager 源码分析
    Node.js 零基础入门 Node.js 零基础入门第二天 2.4 模块的加载机制
    [开发过程]<c#上位机>关于.net6
  • 原文地址:https://blog.csdn.net/dgiij/article/details/140397997
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号