Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度:用于开关与dict查找_Angular_Typescript - Fatal编程技术网

Angular 角度:用于开关与dict查找

Angular 角度:用于开关与dict查找,angular,typescript,Angular,Typescript,我正试图决定使用哪个选项通过URL参数进行解析,这两个选项似乎都不太理想,在我看来,必须有更好的方法来处理这个问题-如果有,请建议合理的选项#3。假设多达40个参数 选项1 缺点:复杂度O(n*k),其中n为参数数,k为切换案例数;看起来也很糟糕 for(let param in params) { let value = params[param]; switch(param){ case 'param1': { doSomethingWithParam1(valu

我正试图决定使用哪个选项通过URL参数进行解析,这两个选项似乎都不太理想,在我看来,必须有更好的方法来处理这个问题-如果有,请建议合理的选项#3。假设多达40个参数

选项1

缺点:复杂度O(n*k),其中n为参数数,k为切换案例数;看起来也很糟糕

for(let param in params) {
  let value = params[param];
  switch(param){
    case 'param1': {
      doSomethingWithParam1(value);
      break;
    }
    case 'param2': {
      doSomethingWithParam2(value);
      break;
    }
  }
}
选项2

优点:复杂性O(k)

缺点:看起来更糟

let param = '';
param = 'param1';
if(param in params){
  let value = params[param];
  doSomethingWithParam1(value);
}
param = 'param2';
if(param in params){
  let value = params[param];
  doSomethingWithParam2(value);
}

TypeScript是JavaScript的超集,因此您可以使用函数创建对象并按键调用它们:

let函数={
f1:函数(){
log(`it is f1 function`)
},
f2:函数(){
log(`it is f2 function`)
},
f3:函数(){
log(`it is f3 function`)
}
}
设param='';
param='f1';
log(函数[param]())