edit1: Modifizierte für Javascript, nicht Java. Hoppla ...
Ich bin mir nicht sicher, ob Sie alle Kombinationen sehen möchten, aber Sie können sie gruppieren, indem Sie für jeden möglichen Ausgang einen numerischen Wert eingeben.
Konkret gibt es 5 Variablen und 2 Optionen jede Variable? Ich habe eine Tabelle mit Zahlen in Binärdarstellung eingerichtet. Wenn es je> 2 Optionen gibt (oder bei einigen Variablen), müssen Sie Zahlen (Basis 10) verwenden. Sie können binäre Werte verwenden wie
const locVal = (loc > 0 ? 0x1 : 0x0) << 0;
const catVal = (cat < 0 ? 0x1 : 0x0) << 1;
const priceVal= (price < 0 ? 0x1 : 0x0) << 2;
ect
So können Sie gruppieren sie in einem Verfahren:
function foo(trueCond, level) {
return (trueCond ? 0b1 : 0b0) << level;
}
die
const locVal = foo(loc > 0, 0);
const catVal = foo(cat > 0, 1);
const priceVal= foo(price > 0, 2)
macht (Ich habe die anderen Vars weggelassen ...) Dann Addieren Sie die Binärwerte
const total = locVal + catVal + priceVal
Dann müssen Sie jetzt einen Schalter Case-Anweisung wie
switch (total) {
case 0: // all options negative
case 1: // only loc is positive
case 2: // only cat is positive
case 3: // both loc and cat is positive
ect
}
Die Werte in den case
stellen den ganzzahligen Wert der binären Sequenz, die in total
verwenden. Es ist zu beachten, dass es sehr wichtig Dokument der Code sehr gut ist, vor allem die Fallblöcke, so dass andere Leser direkt herausfinden können, welcher Wert für was steht (wie ich).
Wenn es mehr als zwei Optionen pro variabel ist, können Sie in Faktoren von 10 arbeiten (wie in Methode foo verwenden (trueCond ? 1 : 0) * Math.pow(10, level)
)
Von den 3 oben wiederholen Sie die letzten 3 Prüfungen, Sie könnten sie einmal überprüfen und eine if-Anweisung verschachteln, wenn für den Rest. –
Sie möchten also einen if-elseif-else Zweig mit allen Möglichkeiten dieser Variablen haben? 'Preis> 0 || jsBed <= Schlafzimmer || jsBuilt> = built' erscheint doppelt. Nicht sicher, ob Sie zB 'jsBed> Schlafzimmer 'überprüfen möchten? – KarelG
Versuchen Sie, die Gesamtzahl der erfüllten Bedingungen zu finden? (2. und 3. Bedingung sollten gleich behandelt werden) Oder haben Sie unterschiedliche Implementierungen, je nachdem, welche Bedingung erfüllt ist? –