Javascript:降低圈复杂度

Javascript: Reduce cyclomatic complexity

function(response) {
  if (response.bMap && SelType === 'q') {
    setDefaultQQ(response.bMap);
  } else if (response.bMap && SelType === 'a') {
    setDefaultAA(response.bMap);
  } else if (response.bMap && SelType === 'o') {
    setDefaultOO(response.bMap);
  } else if (response.mMap && SelType === 'm') {
    setDefaultMM(response.mMap);
  } else if (response.bMap && SelType === 'p') {
    setDefaultPP(response.bMap);
  } else if (response.eMap && SelType === 'e') {
    setDefaultEE(response.eMap);
  } else {
    setDefaultData();
    showModal();
  }
}

有没有办法将这个条件语句简化为更短的形式和更好的可读性

确实没有什么好办法,这个怎么样

eval("setDefault"+SelType.toUpperCase()+SelType.toUpperCase()+"(response."+SelType.toUpperCase()+"Map);");

但肯定不是最好的方法。

可以使用对象来映射 SelType 特定方法

var methods = {
  'a': setDefaultQQ,
  'o': setDefaultOO,
  'm': setDefaultMM,
  ....    
}

if(response.bMap && methods[SelType]){
   methods[SelType](response.bMap);
}else{
   setDefaultData();
   showModal();
}