2017-02-13 4 views
0

ich diesen AusdruckKann diese Expression

var foo = (!A && B && C) || (A && B && !C) ; 

Kann jemand empfehlen, eine gute Vereinfachung mit minimalen Betreiber vereinfachen müssen vereinfacht?

Antwort

4

B ist in beiden Bedingungen üblich, für Ruhe bedingte Operator kann verwendet werden.

var foo = B && (A ? !C : C); 

Sein einer XOR-Operation, tun lesen Logical XOR in JavaScript

+1

kühlen. Gute Verwendung von Conditional. – Tushar

+0

Ich habe gerade 5 Minuten an die verschiedenen Kombinationen gedacht, das ist, was ich denke, ist das Beste in Bezug auf Lesbarkeit und Einfachheit. – PaulBGD

+0

@Satpal Danke. Ich denke, das ist die bestmögliche Vereinfachung. –

2

Seit (!A && C) || (A && !C) ist die Erweiterung des XOR, können Sie diesen Teil mit einem XOR Ausdruck ersetzen:

var foo = B && (!!A^!!C); 
+0

Die doppelten Ausrufezeichen '!!' haben keinen Sinn und sollten entfernt werden. –

+1

@PatrickTrentin Sie haben sehr viel einen Punkt. '!! 4^!! 8' ist' 0' (falsy), aber '4^8' ist' 12' (truthy). '!!" nichtleere "^ !!" "' ist '1' (truthy), aber' "nichtleere"^"" 'ist' 0' (falsy). – JLRishe

+0

Punkt genommen, irgendwie verwechselte ich es für '~~' –