search

Home  >  Q&A  >  body text

javascript - 多重选择语句的思路

有一个多重判断语句 逻辑上是判断type=不同的数字 执行不同的方法 type的取值范围从1~9 有部分type值没有对应的处理函数
比如:

if(type==1){
//do something
}
if(type==3){
//do something
}
if(type==5){
//do something
}

后来觉得很多冗余 换了一种方法:

var goto={
"1":function(){
//do something
},
"3":function(){
//do something
},
"5":function(){
//do something
}
};
goto[type];

但是又遇到一个问题,type值遇上没有列出在goto的时候会遇到undefined错误,可是如果这样写:

var goto={
"1":function(){
//do something
},
"3":function(){
//do something
},
"5":function(){
//do something
}
“2”:function(){},
“4”:function(){},
“6”:function(){},
“8”:function(){}
};
goto[type];

又觉得这样的代码量分分钟比第一种还要多 请问有没有其他思路呢 谢谢

PHP中文网PHP中文网2816 days ago563

reply all(3)I'll reply

  • 高洛峰

    高洛峰2017-04-10 14:24:56

    这是javascript?直接用switch?如

    function func(i){
      switch(i){
        case "1":
          console.log("1...");
          break;
        case "2":
          console.log("2...");
          break;
        case 2:
          console.log("2...num");
          break;
        default:
          console.log("...");
      }
    }
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 14:24:56

        function getFunByVal(val){  
            return {"1":doSomething,"1":doSomething,"3":doSomething,"4":doSomething,"5":doSomething,"6":doSomething,"7":doSomething,"8":doSomething,"9":doSomething}[val];   
        }  
    

    reply
    0
  • 黄舟

    黄舟2017-04-10 14:24:56

    你的第2种和第3种是一样的形式了...

    var gofunc = function(type) {
      var maps = {
        1: function() {
          console.log('1');
        },
        2: function() {
          console.log('2');
        },
      };
      return (maps.hasOwnProperty(type) ? maps[type]() : null);
    }
    

    reply
    0
  • Cancelreply