为了账号安全,请及时绑定邮箱和手机立即绑定

在线等!请问超过5种判断情况有什么方式可以替代if else吗求指导!

在线等!请问超过5种判断情况有什么方式可以替代if else吗求指导!

临摹微笑 2019-11-02 13:55:15
具体需求:现在需要判断一个变量是否在某个区间,从而做相应逻辑。但是需要判断的情况太多了,不大于2、不大于3但是大于、...除了ifelse还有什么办法可以实现吗例如:如果需要判断10次,就需要写10个ifelse判断//switchcase没法判断(a)=>{if(a
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

我的处理方式,供参考:
functioncheckRange(total){
constresult=(total<=2&&'A')||(total<=3&&'B')||(total<=4&&'C')||'D'
returnresult
}
console.log(checkRange(2))
console.log(checkRange(3))
console.log(checkRange(4))
console.log(checkRange(5))
                            
查看完整回答
反对 回复 2019-11-02
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

其实你这里已经是a<=2的else了,就可以直接写a<=3了。。。
(a)=>{
if(a<=2)//xxx
elseif(a<=3)//xxx
elseif(a<=4)//xxx
else//xxx
}
或者是给每个状态命名:
conststatus=a<=2
?'<2'
:a<=3
?'2-3'
:a<=4
?'3-4'
:'>4'
switch(status){
case'<2':
case'2-3':
case'3-4':
case'>4':
}
题主说命名状态难以读懂,我不是很服:
conststatus=a<=2
?'a小于2'
:a<=3
?'2到3'
:a<=4
?'3到4'
:'a大于4'
switch(status){
case'a小于2':
case'2到3':
case'3到4':
case'a大于4':
}
还有就是ifelsereturn的例子:
if(...){
returna
}elseif(...){
returnb
}else{
returnc
}
可以写作
if(...)returna
if(...)returnb
returnc
甚至是三元
return(...)
?a
:(...)
?b
:c
这时候判断有多层的话,用三元不知道比ifelse可读性好到哪里去了:
function(a,b){
if(a<2){
if(b%1<.5)return'case1'
elsereturn'case2'
}elseif(a<3){
return'case3'
}else{
return'case4'
}
}
constfn=(a,b)=>a<2
?b%1<.5
?'case1'
:'case2'
:a<3
?'case3'
:'case4'
                            
查看完整回答
反对 回复 2019-11-02
  • 2 回答
  • 0 关注
  • 494 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信