Ich habe eine Seite, die linken und rechten Abschnitt hat. Im rechten Bereich werden die Ergebnisse basierend auf den Filtern angezeigt, die der Benutzer links auswählt. Jedes Mal, wenn der Benutzer die Filter auf der linken Seite auswählt und eine Taste drückt, mache ich eine Abfrage an den Server, um die Ergebnisse zu erhalten.Wie zu vermeiden, wenn if/else beim Filtern von Resultsets
Ich merke, dass meine if/else-Klausel schrecklich aussieht und jedes Mal, wenn ich einen neuen Filter hinzufüge, muss ich viel Arbeit machen. Gibt es eine Möglichkeit, dies zu vermeiden?
Im Moment habe ich die folgenden Filter: foo, bar, fromdate, todate, profile
Meine if/else wie folgt aussieht:
var query = "?"
if (self.foo === '' && self.bar === '' && self.fromdate === '' && self.todate === '' && self.profile === '')
query = "";
else if (self.foo.length > 2 && self.bar === '' && self.fromdate === '' && self.todate === '' && self.profile === '')
query += "foo=" + self.foo;
else if (self.foo.length > 2 && self.bar.length > 2 && self.fromdate === '' && self.todate === '' && self.profile === '')
query += "foo=" + self.foo + "&bar=" + self.bar;
// ...
xhr.open('GET', apiURL+query)
self.loading = true
xhr.onload = function() {
self.requests = JSON.parse(xhr.responseText)
//do stuff
self.loading = false;
}
Frage Gibt es eine Möglichkeit, dies zu machen, wenn/sonst leichter zu verstehen und verwalten?
Mit Switch-Anweisung (Fall) könnte leicht lesbar sein. –