if Switch 相关匹配代码优化

缘起

条件匹配案例及优化方式

  1. 单个 if elseif 匹配

    const text = {1: '火烧', 2:'施工', 3: '刮断', 4: '盗割', 5: '光纤单断'}[item.status]
    
    
    
    
  2. 多个 if elseif 匹配

if(status === 1 || status === 2 || status === 3){

  *// xxx code*

}

可以优化为

if([1,2,3].includes(status)){

  *// xxx code*

}

  1. 范围匹配

0 ~ 60 继续努力

60 ~ 70 及格

70 ~ 80 一般

80 ~ 90 良好

90 ~ 100 优秀

const matchCases = [
  {test: (score) => score > 0 && score < 60, result: '继续努力'},

  {test: (score) => score > 60 && score < 70, result: '及格'},

  {test: (score) => score > 70 && score < 80, result: '一般'},

  {test: (score) => score > 80 && score < 90, result: '良好'},

  {test: (score) => score > 90 && score < 100, result: '优秀'},

  {test: (score) => score < 0 || score > 100, result: '数据错误'}
]



const grade = matchCases.find(*case* => case.test(score)).result

  1. enum 枚举

    推荐使用 枚举类的写法, 扩展性极强 : https://github.com/iShawnWang/enum

  2. Pattern Matching: JS 界不流行, 但其它语言有良好支持及理论支撑

    https://github.com/tc39/proposal-pattern-matching