2017-04-03 38 views
1
function getFieldType(value){ 
    var type = ""; 
    switch(value){ 
     case "TEXT_BOX": 
      type=FieldTypeEnum.TEXT_BOX; 
      break; 
     case "PASSWORD": 
      type=FieldTypeEnum.PASSWORD; 
      break; 
     case "CHECK_BOX": 
      type=FieldTypeEnum.CHECK_BOX; 
      break; 
     case "RADIO_BUTTON": 
      type=FieldTypeEnum.RADIO_BUTTON; 
      break; 
     case "DROP_DOWN": 
      type=FieldTypeEnum.DROP_DOWN; 
      break; 
     case "SEARCH_CARD_BOX": 
      type=FieldTypeEnum.SEARCH_CARD_BOX; 
      break;   
     case "STATE_DROP_DOWN": 
      type=FieldTypeEnum.STATE_DROP_DOWN; 
      break; 
     case "ID_DROP_DOWN": 
      type=FieldTypeEnum.ID_DROP_DOWN; 
      break; 
     case "GENDER_DROP_DOWN": 
      type = FieldTypeEnum.GENDER_DROP_DOWN; 
      break; 
     default: 
      type = ""; 
    } 

    return type; 
} 

我想将三个下拉框(STATE_DROP_DOWN, ID_DROP_DOWN, GENDER_DROP_DOWN)合并为一个。 意味着我想要的东西,象下面这样:开关盒与字符串匹配

case String.endwith("_DROP_DOWN"): 
    type=FieldTypeEnum.ID_DROP_DOWN; 
    break; 

是否有可能在JavaScript?如果是,那么如何?

回答

0

你可以在这种情况下放置一个三元运算符,并测试它是否以"DROP_DOWN"结尾返回value否则为空字符串。

switch(value){ 
    case value.endsWith("_DROP_DOWN") ? value : '' { 
    type=FieldTypeEnum.ID_DROP_DOWN; 
    break; 
} 
} 
1

这是可能的,在JavaScript开关/ case语句就可以比较字符串相等(计算结果为true或false)或更复杂的语句,其只是作为一个字符串相等测试时,也要评估为真或错误(例如String.endwith("_DROP_DOWN"))。但是我个人宁愿以下几点:

STATE_DROP_DOWN: 
    // intentional fall through 
ID_DROP_DOWN: 
    // intentional fall through 
GENDER_DROP_DOWN: 
    //.. do your stuff 
    break; 

我认为这种方式更清晰地通过切换,你正在下降在一定情形的情况下。