Angular: для переключения против поиска dict - PullRequest
1 голос
/ 10 марта 2020

Я пытаюсь решить, какой вариант использовать для анализа параметров 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);
}

1 Ответ

2 голосов
/ 10 марта 2020

TypeScript - это расширенный набор JavaScript, поэтому вы можете создать объект с функциями и вызывать их по клавише:

let functions = {
    f1: function(){
        console.log(`it is f1 function`)
    },
    f2: function(){
        console.log(`it is f2 function`)
    },
    f3: function(){
        console.log(`it is f3 function`)
    }
}

let param = '';
param = 'f1';

console.log(functions[param]());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...