2

次の指示に従って、要件を満たす関数を作成しました。私の機能は、本来の機能を果たしますが、少し複雑すぎると感じています。私にとって難しかったのは、等値演算子を避けることでした。これを解決する唯一の方法は、ちょっとした数学と比較演算子を使用することです。この機能を簡素化し、編集時間を節約するにはどうすればよいですか? 前もって感謝します。

onlyOne任意の型の 3 つの引数を受け入れる関数を作成します。

onlyOne3 つの引数の 1 つだけが true の場合にのみ true を返す必要があります。それ以外の場合は、false を返す必要があります。

ソリューションでは等値演算子 (==および) を使用しないでください。===

私の機能:

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;
}
4

3 に答える 3

0

一発ギャグ:

let onlyOne = (a, b, c) => !(!!a + !!b + !!c - 1);

!!値をブール値に強制します。+ブール値を数値に変換します。ここで、とtrueなります。数値を合計すると、0、1、2、または 3 の潜在的な合計のいずれかを取得できます。1 を減算して 0 を取得し、それを否定できる合計 1 のみを気にします (これにより、それをブール値に戻します) 。1false0true

于 2018-07-19T06:25:31.703 に答える