Hallo,
Das scheint mir aber alles zu kompliziert. Sehe ich eine bessere Methode nicht? Oder hat jquery da eine passende Funktion? Was kann ich besser machen?
Zeige uns mal ein vereinfachtes Beispiel. Eingabedaten, Filterinterface und gewünschte Ausgabe. So abstrakt kann man da schwer etwas zu sagen.
Generelle Tipps: Bringe die Daten in ein Format, das du in JavaScript gut verarbeiten kannst. Das ist z.B. ein Array mit Objects. Objekteigenschaften mit selbst vergebenen Namen sind viel sprechender als Arrayindizes. Dann transformiere die Daten so, dass du sie gut filtern kannst. Eine String-ID zu erzeugen, die sich aus Einzeldaten zusammensetzt, ist schon einmal eine gute Idee. Damit reduziert sich die Vergleichszeit. Natürlich kannst du ähnliche Datensätze auch in einem Object unter einem gemeinsamen Namen gruppieren (Object mit Arrays), um später schneller darauf zuzugreifen: { 'id1': [record1, record2, …], 'id2': […] }
jQuery ist für die Arbeit mit dem DOM gedacht, mehr nicht. Was du hier vorhast, hat mit dem DOM nichts zu tun. Das DOM ist nur letztlich zur Ausgabe/Visualisierung nötig. Interessant ist die Datenverarbeitung davor, das solltest du tunlichst von der Ausgabe trennen.
Für den Umgang mit »Daten« gibt es allgemeine Bibliotheken wie Lodash bzw. Underscore. Für das Mapping von Daten auf DOM-Elemente kann man jQuery verwenden oder spezielle Bibliotheken wie D3.js.
Ich würde dir raten, auf jeden Fall einmal Lodash anzusehen. Da ist keine Magie drin, sondern nur Umsetzungen von einschlägigen Operationen für Objekte und Listen (Map, Reduce, Filter, Grouping…). Vieles bietet JavaScript mittlerweile auch selbst, siehe die Array-Methoden.
Mathias