撰写此声明的更好方法是什么?虽然这有效。我觉得有一种更为简洁的方式。优选ES6方法。
var show = [
{
name: 'Active',
slug: 'active',
enabled: true
},
{
name: 'Inactive',
slug: 'inactive',
enabled: true
}
]
var isActive = null;
if (show[0].enabled && show[1].enabled) {
isActive = null; // if both true
} else if (show[0].enabled) {
isActive = true; // if only active is true
} else if (show[1].enabled) {
isActive = false; // if only inactive is true
}
答案 0 :(得分:2)
您可以使用
var isActive = show[0].enabled != show[1].enabled // if exactly one is true
? show[0].enabled // same as !show[1].enabled
: null;
但是我建议不要使用可以为空的布尔变量。
function getActive(show) {
var isActive = show[0].enabled != show[1].enabled // if exactly one is true
? show[0].enabled // same as !show[1].enabled
: null;
console.log(show[0].enabled, show[1].enabled, isActive)
return isActive;
}
getActive([{enabled: true},{enabled: true}]);
getActive([{enabled: false},{enabled: true}]);
getActive([{enabled: true},{enabled: false}]);
getActive([{enabled: false},{enabled: false}]);
答案 1 :(得分:1)
您可以采用三元组并检查值是否相等,返回null
,否则只是show[0].enabled
的值。
真相表
[0] [1] result ------- ------- -------- false false null false true false true false true true true null
var isActive = show[0].enabled === show[1].enabled
? null
: show[0].enabled;
答案 2 :(得分:-3)
试试这个
(show[0].enabled && !show[1].enabled) || (!show[0].enabled && show[1].enabled ? false : null );
<强>演示强>
console.log( "true false -> ", getIsActive( [{"enabled":true},{"enabled":false}] ) );
console.log( "false false -> ", getIsActive( [{"enabled":false},{"enabled":false}] ) );
console.log( "true true -> ", getIsActive( [{"enabled":true},{"enabled":true}] ) );
console.log( "false true -> ", getIsActive( [{"enabled":false},{"enabled":true}] ) );
function getIsActive( show )
{
return (show[0].enabled && !show[1].enabled) || (!show[0].enabled && show[1].enabled ? false : null );
}