2016-11-09 2 views
2

I 4 Variablen haben, kann jeder von ihnen wahr oder falschBoolesche Logik, true, wenn 1 von 4 wahr sind

var a 
var b 
var c 
var d 

Ich würde drei Bedingungen testen mag:

  1. wahr, wenn von 4 1 wahr
  2. wahr, wenn 2 von 4 wahr ist
  3. wahr, wenn 3 von 4 wahr ist

Ich weiß, dass 0 von 4 wahr ist, wenn:

a!=true && b!=true && c!=true && d!=true 

und 4 von 4 erfüllt sind, wenn:

a==true && b==true && c==true && d==true 

aber ich kann nicht weiter denken.

Antwort

2

Sie könnten einfach die Variablen mit booleschen Werten hinzufügen. Das Ergebnis ist eine Zahl.

Dann können Sie die Nummer überprüfen, die Sie testen möchten.

var a = false, b = true, c = true, d = true, 
 
    value = a + b + c + d; 
 

 
console.log(value);

+1

Danke, so einfach, und arbeitete wie Charme. Bereits getestet, das war genau das, was ich brauchte. – Kalle

1

Wenn mit einem Bündel von „Dinge“ zu tun, die Sie auf den gleichen Test ausgeführt werden soll, macht es in der Regel sinnvoll zu gruppieren sie ein Array verwendet wird.

var collection = [a, b, c, d]; 

Sie können dann eine Reihe von Elementen erhalten, die einen Test mit filter entsprechen:

var true_elements = collection.filter(function (value) { return (value == true); }); 

Sie dann die Ergebnisse zählen:

console.log(true_elements.length); 

und tun, was Tests, die Sie

mögen
if (true_elements.length === 1) { ... } 
if (true_elements.length >= 1) { ... } 
// etc 
+0

Das ist schick. Ich bin mir nicht sicher, ob ich die C-idiomatische Art, die Werte in Bezug auf Javascript hinzuzufügen, mag. – Bathsheba

1

Javascript ermöglicht das Hinzufügen von Booleschen Typen. Dabei werden die Argumente in Ganzzahlen mit 1 für true und 0 für false konvertiert.

So können Sie

a + b + c + d == 3

als Test für 3 true Werte und 1 false Wert schreiben.

Nicht alle Sprachen unterstützen dies (z. B. Java), aber Javascript, C und C++ tun. Beachten Sie die Visual Basic-Typsprachen, die -1 als True Wert verwenden.

Verwandte Themen