是否可以将开关盒转换为三元件?

时间:2017-01-18 13:24:59

标签: javascript switch-statement

我有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};
 }

5 个答案:

答案 0 :(得分:0)

你可能会这样做:

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

答案 1 :(得分: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);




答案 2 :(得分: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;

答案 3 :(得分:0)

声明对象

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

然后您可以轻松转换下面的开关

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

答案 4 :(得分: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);