gpt4 book ai didi

javascript - 以这种特定方式比较真实性的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-29 17:44:05 24 4
gpt4 key购买 nike

根据以下说明,我创建了一个满足要求的函数。我觉得我的功能有点太复杂了,尽管它做了它应该做的。对我自己来说,困难的部分是避免相等运算符。我能想到的解决这个问题的唯一方法是使用一些数学知识和比较运算符。如何简化此功能并节省一些编辑时间?提前致谢。

Write a function onlyOne that accepts three arguments of any type.

onlyOne should return true only if exactly one of the three arguments are truthy. Otherwise, it should return false.

Do not use the equality operators (== and ===) in your solution.

我的功能:

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 并将 reduce 转换为一个数字,然后检查该数字减一的真实性:

const onlyOne = (...args) => {
const numTruthy = args.reduce((a, arg) => a + Boolean(arg), 0);
return !Boolean(numTruthy - 1);
};
console.log(onlyOne(0, 0, 0));
console.log(onlyOne(0, 0, 1));
console.log(onlyOne(0, 1, 1));
console.log(onlyOne(1, 1, 1));

或者,对于更简洁但不易理解的版本,您可以将 1 集成到提供给 reduce 的初始值中:

const onlyOne = (...args) => !args.reduce((a, arg) => a + Boolean(arg), -1);

console.log(onlyOne(0, 0, 0));
console.log(onlyOne(0, 0, 1));
console.log(onlyOne(0, 1, 1));
console.log(onlyOne(1, 1, 1));

关于javascript - 以这种特定方式比较真实性的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51414731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com