js if else 条件判断优化

说明:代码块,用于表单提交前对数据校验使用。

优化前,代码判断比较繁琐。

      // 添加校验
      if (generateType.value === '0' && num.value === 0 || score.value === 0 ) {
        message.warning('请设置AAA')
        return
      }else if (generateType.value === '1') {
        if (selectedPaperQuestions.value.length ===0) {
           message.warning('请设置B')
           return
        } else {
          if (isExistNotSetScorePaperQuestion()) {
            message.warning('请设置BBB')
            return
          }
        }
      } else if (generateType.value === '2' && num.value > 1) {
        message.warning('请设置CCC')
        return
      }

尝试进行代码优化

      let paperRule =  {
        0:{'dataValid':()=>num.value === 0 || score.value === 0,'msg':'请设置试题或试题分值'},
        1:{'dataValid':()=>isExistNotSetScorePaperQuestion(),'msg':'请设置试题或试题分值'},
        2:{'dataValid':()=>num.value > 1,'msg':'***,只能选1道题'}
      }
      // 添加校验
      if (paperRule[generateType.value].dataValid()) {
         message.warning(paperRule[generateType.value].msg)
        return
      }
    /**是否存在未设置明细项成绩的试题 */
    const isExistNotSetScorePaperQuestion = ()=>{
      return selectedPaperQuestions.value.length ===0 || questionDetailScoresMap.size !== selectedPaperQuestions.value.length ;
    }

优化后,代码一下子简约了好多。

但仍有不足之处,未实现原有的 if (selectedPaperQuestions.value.length ===0) 分支判断。

 

posted on 2021-11-06 11:51  L秦岭  阅读(500)  评论(0)    收藏  举报

导航