用于"if a or b or c but not all of them"的 JS 语法



所以,我是JS的超级新手!我正在尝试编写一个语法来检查是否只有三个变量中的一个存在。

if a and (not b or not c) or b and (not a or not c) or c and (not a or not b)

试一下:

if ((a || b || c) && !(a && b && c)) {
}

这里有一个测试:

function specialBool(a, b, c, message){
if ((a || b || c) && !(a && b && c)) {
console.log(message)
}
}
specialBool(true, false, false, 'One true');
specialBool(true, true, false, 'Two true');
specialBool(true, true, true, 'All true'); // Shouldn't log

将它们转换为布尔值,然后将它们相加,检查结果是否为1。(true将被强制为1;False将被强制为0)

if (Number(Boolean(a)) + Number(Boolean(b)) + Number(Boolean(c)) === 1) {
// ...
}

const sum = [a, b, c].reduce((sum, item) => sum + Number(Boolean(item)), 0);
if (sum === 1) {
// ...
}

相关内容

  • 没有找到相关文章

最新更新