2017-01-18 3 views
0

У меня есть switch case:Возможно ли преобразование корпуса коммутатора в тройное состояние?

var rollNumValue = "1001"; 
switch (someVariable) { 
    case 'A': 
     urlKey = 'abc/api/01'; 
     keyField = { rollNo: rollNumValue}; 
    break; 
    case 'B': 
     urlKey = 'abc/api/02'; 
     keyField = { rollNo: rollNumValue}; 
    break; 
    default: 
     urlKey = 'abc/api/03'; 
     keyField = { serialNumber : rollNumValue}; 
} 

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

Почему?

Мне нужно сохранить код в базе данных.

Редактировать

default: 
     urlKey = 'abc/api/03'; 
     keyField = { serialNumber : rollNumValue}; 
} 
+1

Что хранить в базе данных должны делать с тройным условиях? –

+0

Было бы лучше уменьшить числовые строки, чем использовать условный оператор. –

+0

@_Emil Я просто хочу уменьшить строку кода. –

ответ

0

Вы могли бы сделать что-то вроде этого:

urlKey = (someVariable == 'A') ? 'abc/api/01' : 
      (someVariable == 'B') ? 'abc/api/02' : 'abc/api/03'; 
keyField = { rollNo: rollNumValue}; 
0

только с ternary оператора код будет не читаемым, но вы можете уменьшить количество кода с этим , Используйте оператор ternary и переместите keyField = { rollNo: rollNumValue}; у тройного оператора.

var rollNumValue = "1001"; 
 
var keyField = { rollNo: rollNumValue}; 
 

 
var someVariable = 'A'; 
 

 
var urlKey = someVariable === 'A' ? 'abc/api/01' : someVariable === 'B' ? 'abc/api/02' : 'abc/api/03'; 
 

 
console.log(urlKey);

Или с доступом собственности. JavaScript позволяет вам получить доступ к своим свойствам с помощью другой переменной. Просто используйте синтаксис кронштейнов [].

var rollNumValue = "1001"; 
 
var apis = { 'A': 'abc/api/01', 'B': 'abc/api/02', otherCase: 'abc/api/03' }; 
 

 
var keyField = { rollNo: rollNumValue}; 
 

 
var someVariable = 'A'; 
 

 
var urlKey = apis[someVariable] || apis.otherCase; 
 

 
console.log(urlKey);

0

Вы можете использовать объект вместо switch заявления, которые могут быть легко сериализованными.

var rollNumValue = "1001", 
    values = { A: 'abc/api/01', B: 'abc/api/02', default: 'abc/api/03' }, 
    keyField = { rollNo: rollNumValue}, 
    urlKey = values[someVariable] || values.default; 
0

объект объявить

var data = {A: "01", B: "02"}; 

, то вы можете легко конвертировать переключатель как ниже

urlKey = 'abc/api/' + (data[someVariable] || "03"); 
keyField = { rollNo: rollNumValue}; 
0

Да, конечно. С помощью деструкции объекта ES6 вы можете просто сделать следующее:

var rollNumValue = "1001", 
 
      urlKey, 
 
     keyField, 
 
    someVariable; 
 

 
({urlKey,keyField} = someVariable === "A" ? {urlKey: 'abc/api/01', keyField: {rollNo: rollNumValue}} 
 
              : someVariable === "B" ? {urlKey: 'abc/api/02', keyField: {rollNo: rollNumValue}} 
 
                   : {urlKey: 'abc/api/03', keyField: {rollNo: rollNumValue}}); 
 

 
console.log(urlKey); 
 
console.log(keyField);

Смежные вопросы