Javascript ohne jquery nach Child in JSON suchen

Fragen zu allen anderen Programmiersprachen.
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Javascript ohne jquery nach Child in JSON suchen

Beitrag von ¯\_(ツ)_/¯ »

Hallo, ich bin in Javascript ein Anfänger und komme an einer Stelle nicht weiter. Ich benutze JS nativ, also muss das ohne jquery funktionieren.
Ich habe ein JSON und möchte die Ausgabe mit der Funktion .filter() nach etwas suchen und gefiltert ausgeben.

Es soll nur über "Name" gesucht werden. Z.B. möchte ich alle Einträge haben, die beim "Name" das Wort "Programm" enthält. In dem Fall müsste ich zwei Ergebnisse zurück bekommen. "Programme und Funktionen" und "Programmierung"

Mein JSON

Code: Alles auswählen

{
   "KategorieAGH":[
      {
         "Name":"Programme und Funktionen",
         "Wert":25
      }
   ],
   "KategorieTZU":[
      {
         "Name":"Programmierung",
         "Wert":75
      },
      {
         "Name":"Funktionalität",
         "Wert":50
      }
   ],
   "KategorieHGA":[
      {
         "Name":"Hallo Welt",
         "Wert":10
      },
      {
         "Name":"Hallo Sabine",
         "Wert":90
      }
   ]
}
Mein Versuch in JS:

Code: Alles auswählen

var json = '[{"KategorieAGH":[{"Name":"Programme und Funktionen","Wert":25}],"KategorieTZU":[{"Name":"Programmierung","Wert":75},{"Name":"Funktionalität","Wert":50}],"KategorieHGA":[{"Name":"Hallo Welt","Wert":10},{"Name":"Hallo Sabine","Wert":90}]}]';
obj = JSON.parse(json);

var data_filter = obj.filter( element => element.Name == "Programm")//"Programme und Funktionen" funktioniert auch nicht
console.log(data_filter)
Ich krieg es nicht hin, in das Kind reinzuhangeln und nur nach "Name" mit einem Wort zu vergleichen.

Ein anderes Beispiel mit einem einfachen JSON mit einer Ebene funktioniert tadellos:

Code: Alles auswählen

var data = [{"name":"Lenovo Thinkpad 41A4298","website":"google"},
{"name":"Lenovo Thinkpad 41A2222","website":"google"},
{"name":"Lenovo Thinkpad 41Awww33","website":"yahoo"},
{"name":"Lenovo Thinkpad 41A424448","website":"google"},
{"name":"Lenovo Thinkpad 41A429rr8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ff8","website":"ebay"},
{"name":"Lenovo Thinkpad 41A429ss8","website":"rediff"},
{"name":"Lenovo Thinkpad 41A429sg8","website":"yahoo"}]

var data_filter = data.filter( element => element.website =="yahoo")
console.log(data_filter)
Bitte helft mir :) Ich wäre euch sehr dankbar :)
Bild
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Javascript ohne jquery nach Child in JSON suchen

Beitrag von #NULL »

In deinem 1. JSON Source hast kein Root-Array, in deinem 2. Source hast du ein Array drumherum?
Brauchst du auch die Kategorien, bzw willst du die Struktur erthalten?
my pb stuff..
Bild..jedenfalls war das mal so.
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Re: Javascript ohne jquery nach Child in JSON suchen

Beitrag von ¯\_(ツ)_/¯ »

Ich möchte gerne die Struktur von dem jeweiligen gefundenen Eintrag bekommen, so dass ich auch den Kategorienamen, der beliebig sein kann, ermitteln kann.
Es wäre super geil, wenn du oder ein anderer mir helfen kann.
Beispiel, wenn ich nach "Programmierung" suche, dann soll die Ausgabe so sein:

Code: Alles auswählen

{
   "KategorieTZU":[
      {
         "Name":"Programmierung",
         "Wert":75
      }
   ]
}
Wenn ich nach "Programm" (Wildcardsuche möglich?) suche, dann soll die Ausgabe so sein:

Code: Alles auswählen

{
   "KategorieAGH":[
      {
         "Name":"Programme und Funktionen",
         "Wert":25
      }
   ],
   "KategorieTZU":[
      {
         "Name":"Programmierung",
         "Wert":75
      }
   ]
}
Bild
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: Javascript ohne jquery nach Child in JSON suchen

Beitrag von #NULL »

Leider nicht ganz wie in deinem letzten Post beschrieben..

Code: Alles auswählen

			var json = '[{"KategorieAGH":[{"Name":"Programme und Funktionen","Wert":25}],"KategorieTZU":[{"Name":"Programmierung","Wert":75},{"Name":"Funktionalität","Wert":50}],"KategorieHGA":[{"Name":"Hallo Welt","Wert":10},{"Name":"Hallo Sabine","Wert":90}]}]';
			obj = JSON.parse(json);
			console.log(obj)
			
			var data_filter = [];
			for (var i = 0; i < obj.length; i++) {
				var kat = obj[i];
				for (var prop in kat) {
					if (kat.hasOwnProperty(prop)) {
						var entries = kat[prop];
						for (var e = 0; e < entries.length; e++) {
							var entry = entries[e];
							if (entry.Name.indexOf('Programm') >= 0) {
								data_filter.push( { 'Kategorie' : prop, 'Name' : entry.Name, 'Wert' : entry.Wert } );
							}
						}
					}
				}	
			}
			console.log(data_filter)

Code: Alles auswählen

[
  {
    "Kategorie": "KategorieAGH",
    "Name": "Programme und Funktionen",
    "Wert": 25
  },
  {
    "Kategorie": "KategorieTZU",
    "Name": "Programmierung",
    "Wert": 75
  }
]
my pb stuff..
Bild..jedenfalls war das mal so.
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Re: Javascript ohne jquery nach Child in JSON suchen

Beitrag von ¯\_(ツ)_/¯ »

Danke sehr :)
Bild
Antworten