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

  • litterauspirna
    hat ein Thema erstellt Objektfilter nach und / oder realisieren.

    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

  • litterauspirna
    antwortet
    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);

    Einen Kommentar schreiben:


  • litterauspirna
    antwortet
    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
    	}
    ];

    Einen Kommentar schreiben:


  • rudygotya
    antwortet
    Mach doch aus dem Objekt ein Array und verwende Array.prototype.filter: https://developer.mozilla.org/en-US/...s/Array/filter

    Einen Kommentar schreiben:

Lädt...
X