Ankündigung

Einklappen
Keine Ankündigung bisher.

Objektfilter nach und / oder realisieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Objektfilter nach und / oder realisieren

    Hallo und guten Morgen,

    ich plage mich gerade mit einem Problem rum und mir will nicht wirklich eine funktionierende Idee einfallen.

    Ich habe folgende 2 Objekte.

    1) mein Datenobjekt was mittels Ajax von einer Server REST API geholt wird

    Code:
    var obj = {
    	0 : {
    		applicationComponent : "systemUsers",
    		applicationType : "ignore",
    		id : 133,
    		idUser : 0
    	},
    	1 : {
    		applicationComponent : "pagenaviData",
    		applicationType : "mobile",
    		id : 149,
    		idUser : 5
    	},
    	2 : {
    		applicationComponent : "langParams",
    		applicationType : "ignore",
    		id : 157,
    		idUser : 0
    	}
    };
    2) ein Filterobjekt, welches aus einem Formular stammt

    Code:
    var filterDate = {
    	applicationType: "ignore", 
    	idUser: "5"
    };
    Mein Ziel ist es das Datenobjekt filtern zu können nach einem AND / OR Prinzip.

    Heißt, wenn der Benutzer alle Daten mit der Angabe applicationType = "ignore" und idUser = 5 haben will und diese als Verbundkriterium AND angezeigt haben möchte, sollen eben nur Datensätze angezeigt werden welche beide Werte enthalten.

    Im OR ist es ja einfach zu realisieren. Aber ich bekomme das mit dem AND einfach nicht wirklich hin. Habt ihr da vielleicht einen hilfreichen Tipp für mich?

    Vielen Dank für eure Zeit und Mühe. Gruß der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de


  • #2
    Mach doch aus dem Objekt ein Array und verwende Array.prototype.filter: https://developer.mozilla.org/en-US/...s/Array/filter
    I like cooking my family and my pets.
    Use commas. Don't be a psycho.
    Blog - CoverflowJS

    Kommentar


    • #3
      Zitat von rudygotya Beitrag anzeigen
      Mach doch aus dem Objekt ein Array und verwende Array.prototype.filter: https://developer.mozilla.org/en-US/...s/Array/filter
      Die Funktion hatte ich schon gefunden, aber dann hätte ich ja ein Array mit Objekten und stände doch vor dem gleichen Problem oder irre ich da?

      Bzw. ist es schon ein Array, ich habe das hier falsch dargestellt.

      Code:
      var obj = [
      	{
      		applicationComponent : "systemUsers",
      		applicationType : "ignore",
      		id : 133,
      		idUser : 0
      	},
      	{
      		applicationComponent : "pagenaviData",
      		applicationType : "mobile",
      		id : 149,
      		idUser : 5
      	},
      	{
      		applicationComponent : "langParams",
      		applicationType : "ignore",
      		id : 157,
      		idUser : 0
      	}
      ];
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Ich habe eine Lösung gefunden.

        Code:
        var filter = function filter(arr, criteria) {
        
        	return arr.filter(function(obj) {
        		return Object.keys(criteria).every(function(c) {
        			return obj[c] == criteria[c];
        		});
        	});
        };
        
        tmpCacheData = filter(application.globals.cacheEntries, params.data);
        console.log(tmpCacheData);
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar

        Lädt...
        X