Javascript ohne jquery nach Child in JSON suchen
Verfasst: 25.01.2019 18:18
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
Mein Versuch in JS:
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:
Bitte helft mir Ich wäre euch sehr dankbar
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
}
]
}
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)
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)