Javascript 以这种特定方式比较真实性的最简单方法是什么?
根据以下说明,我创建了一个满足要求的函数。我觉得我的函数有点太复杂了,尽管它做了它应该做的。对我来说,最困难的部分是避免使用相等运算符。我能想到的解决这个问题的唯一方法是用一点数学知识和一个比较运算符。如何简化此功能并节省一些编辑时间? 提前谢谢 只编写一个接受三个任意类型参数的函数 仅当三个参数中有一个参数为 真的。否则,它应该返回false 不要在解决方案中使用等式运算符==和=== 我的职能:Javascript 以这种特定方式比较真实性的最简单方法是什么?,javascript,truthiness,Javascript,Truthiness,根据以下说明,我创建了一个满足要求的函数。我觉得我的函数有点太复杂了,尽管它做了它应该做的。对我来说,最困难的部分是避免使用相等运算符。我能想到的解决这个问题的唯一方法是用一点数学知识和一个比较运算符。如何简化此功能并节省一些编辑时间? 提前谢谢 只编写一个接受三个任意类型参数的函数 仅当三个参数中有一个参数为 真的。否则,它应该返回false 不要在解决方案中使用等式运算符==和=== 我的职能: function onlyOne(input1, input2, input3) { o
function onlyOne(input1, input2, input3) {
output = false;
let truthy = 0;
let falsey = 0;
if (!!input1) {
truthy++;
} else {
falsey++;
}
if (!!input2) {
truthy++;
} else {
falsey++;
}
if (!!input3) {
truthy++;
} else {
falsey++;
}
if (falsey > truthy) {
output = true;
}
if (falsey > 2) {
output = false;
}
return output;
}
我会对每个参数调用Boolean并将其缩减为一个数字,然后检查该数字减去1的真实性:
const onlyOne=…args=>{
常量numTruthy=args.reducea,arg=>a+Booleanarg,0;
返回!BooleannumTruthy-1;
};
console.logonlyOne0,0,0;
console.logonlyOne0,0,1;
console.logonlyOne0,1,1;
console.logonlyOne1,1,1 您可以使用下面的过滤器和计数
在filterCount函数中,第一个参数将决定您想要的是truthy计数还是falsy计数
常量filterCount=bool,…args=>args.filteri=>i==bool.length;
console.logtruthy=+filterCounttrue,1,0,0;
console.logfalsy=+filterCountfalse,1,0,0;
console.logtruthy=+filterCounttrue,1,0,1;
console.logfalsy=+filterCountfalse,1,0,1 一艘班轮:
let onlyOne = (a, b, c) => !(!!a + !!b + !!c - 1);
!!将值强制转换为布尔值。+将布尔值强制为数字,其中true变为1,false变为0。我们把这些数字加起来,现在我们可以得到这些潜在总数中的任何一个:0、1、2或3。我们只关心1的总数,我们可以从中减去1得到0,然后求反,这将迫使它返回到布尔值,从而使它成为真的。这可能更适合询问谢谢你,莱克斯。我现在就去问。