Нужен эквивалент значения по умолчанию регистра переключателя в литеральной функции объекта - PullRequest
0 голосов
/ 31 января 2020

В случае переключателя значением по умолчанию будет все, кроме ожидаемых случаев. Мне пришлось заменить регистр переключения функцией литерала объекта, чтобы уменьшить сложность цикломати c.

function test(){
  const options = getOptions();
  switch(options){
   case 'a':
       return 'foo';
   case 'b'
       return 'bar';
   default:
       return 'Nothing';
  }
}

Функция замены, которую я написал:

function test(){
  const options = getOptions();
   return {
      'a': 'foo',
      'b': 'bar',
      '': 'Nothing',
      null: 'Nothing',
      undefined: 'Nothing'
   }[options]
}

test();

Проблема в любом алфавите кроме a, b вернет undefined в отличие от регистра переключателя, который будет обрабатывать все другие параметры по умолчанию.

Я пробовал это:

function test(){
  const options = getOptions();
  const default = new RegExp([^c-zC-Z], 'g');
   return {
      'a': 'foo',
      'b': 'bar',
      '': 'Nothing',
      null: 'Nothing',
      undefined: 'Nothing',
      default: 'Nothing'
   }[options]
}

Вышеупомянутое регулярное выражение решает мою проблему покрытия всех других чем «a», «b», но внутри оператора return нет области видимости, значение по умолчанию не распознается. Пожалуйста, предложите на случай по умолчанию.

1 Ответ

1 голос
/ 31 января 2020

Вы можете попробовать этот подход

function test(){
  const result = {
      'a': 'foo',
      'b': 'bar'
   }[getOptions()];
  return result ? result : 'Nothing';
}

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