Search code examples
javascriptif-statementoptimizationconditional-statements

Optimizing if conditional statement


Is there a better way to write the below?

if ((A && B) || (A && B && C)) { ... }

which means I cannot do

if ((A && B) || C) { ... }

Solution

  • You can use logical rules to simplify the statement:

    (A && B) || (A && B && C)
    

    Factorizing the common part (A && B) you get:

    (A && B) && (true || C)
    

    And of course true || C is always true so that entire group becomes a "don't care" and can be discarded. That leaves just:

    A && B
    

    There are other ways to arrive at the same result. In this case, even writing out a basic truth table would have made it pretty obvious.

    For more complicated expressions, the use of a Karnaugh Map can be helpful.