我想根据以下内容编写三元运算符;
var statusJSON = {
'- Select -': '',
'Active': true,
'Inactive': false
};
目前我有
statusFlag: $('#statusFlag').val() == 'true' ? true : false
这适用于true
和false
值,但不处理第3个条件(即空""
)
我该如何处理?
答案 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()]