Переключение оператора для соответствия нескольким случаям - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу написать оператор switch, который будет проходить через первые 2 случая, если они оба истинны. Если нет, сопоставьте только тот, который является истинным.

var vehicle = {main: false, detail: false};

switch(true) {
   case (states.data.currentState.indexOf('main.vehicle') !== -1):
      vehicle.main = true;
      break;
   case (states.data.currentState === 'main.vehicle.detail):
      vehicle.detail = true;
      break;
 }

Моя проблема в том, что после первого прерывания оператор switch завершается и не переходит к случаю 2. Однако если я удаляю break из первого случая, он переходит к случаю 2 и применяет vm.vehicle.detail = true; даже если условие по делу не выполнено.

Так что, если я удаляю разрыв в первом случае, мой объект будет выглядеть так или иначе

{ main: true, detail: true }

Если я этого не сделаю, это будет выглядеть так

{ main: true, detail: false }

Как мне выполнить оба условия при однократном запуске коммутатора?

1 Ответ

0 голосов
/ 14 сентября 2018

Почему бы просто не принять сравнения в качестве значений для объекта?

var vehicle = {
        main: states.data.currentState.indexOf('main.vehicle') !== -1,
        detail: states.data.currentState === main.vehicle.detail
    };

ES6

var vehicle = {
        main: states.data.currentState.includes('main.vehicle'),
        detail: states.data.currentState === main.vehicle.detail
    };
...