用户三元运算符,用于3种可能的结果

时间:2014-05-13 07:30:27

标签: javascript jquery ternary-operator

我想根据以下内容编写三元运算符;

var statusJSON = {
    '- Select -': '',
    'Active': true,
    'Inactive': false
};

目前我有

statusFlag: $('#statusFlag').val() == 'true' ? true : false

这适用于truefalse值,但不处理第3个条件(即空""

我该如何处理?

4 个答案:

答案 0 :(得分:7)

statusFlag: $('#statusFlag').val() == 'true' ? true : 
            $('#statusFlag').val() == '' ? 'empty' : false

您可以添加以下多个条件:

a ? b : (c ? d : e)

()没有必要,但在我看来,当你在没有换行符的情况下编写它时,它们会提高可读性。

这意味着:

if(a){
    b
}else{
    if(c){
        d
    }else{
        e
    }
}

所以,基本上,你在前一个else子句中嵌套了另一个三元运算符。你可以随意使用:

a ? b :   // if(a) then `b`
c ? d :   // else, if(c) then `d`
e ? f :   // else, if(e) then `f`
g ? h :   // else, if(g) then `h`
i ? j : k // else, if(i) then `j`, else `k`

答案 1 :(得分:1)

尝试嵌套ternary运算符

statusFlag: $('#statusFlag').val() == 'true' ?
          true : $('#statusFlag').val() == 'false' ? false : "empty";

答案 2 :(得分:1)

您想在三元表达式中使用2个条件,例如:

value = (condition1) ? a : (condition2) ? c : d;

你的案子:

statusFlag: $('#statusFlag').val() == 'true' ? true : 
        $('#statusFlag').val() == '' ? 'empty' : false

答案 3 :(得分:1)

您可以使用statusJSON作为查找表:

var val = $('#statusFlag').val();
… statusFlag: val in statusJSON ? statusJSON[val] : false /*or whatever*/

如果您确定只发生了三个值,或者其他结果没有undefined,那么您可以使用

… statusFlag: statusJSON[$('#statusFlag').val()]