条件判断的优化

条件判断不外乎是““”“””的排列组合,其中“与”条件得参与“”操作得每一项都要满足才是真,只要有一条不满足就为假,而“”操作只要有一项参与“”操作得项为真,结果就为真。
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 ));

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值