javascript array Sortierung

brudinero

Grünschnabel
Hallo Leute,

ich habe als Ausgangspunkt folgende JSON Struktur:

{
"Name": "XYZ",
"Geburtstag": "11.11.1111",
"Kategorie": "Allgemein",
"Testirgendwas": true
},

{
"Name": "XYZ",
"Geburtstag": "11.11.1111",
"Kategorie": "Allgemein",
"Testirgendwas": true
},

{
"Name": "XYZ",
"Geburtstag": "11.11.1111",
"Kategorie": "Unterkategorie irgendwas",
"Testirgendwas": true
},

Ich möchte mit der forEach Methode die JSON durchsuchen nach den Kategorien und als return aber jede Kategorie nur EINMAL im Zielarray haben. (Es sind zum Beispiel viele Datensätze in der Kategorie "Allgemein".

let testVar = [];

testJSON.forEach(
(item) => {
testVar.push(item.Kategorie)
});

So sehe ich in der testVar zum Beispiel 50x Allgemein, 20x Unterkategorie irgendwas usw.
Jede Kategorie soll nur einmal angezeigt werden.

Kann jemand helfen?!

Vielen Dank vorab!
 
Einfach prüfen, ob die Kategorie schon im Zielarray vorhanden ist:
Code:
let testVar = [];
testJSON.forEach((item) => {
    if (testVar.indexOf(item.Kategorie) == -1) testVar.push(item.Kategorie)
});
 
Hallöchen,

danke für Deine schnelle Antwort.
Leider funktioniert das bei mir nicht genau.
Er pusht trotzdem alle Kategorien nacheinander rein.
 
Das geht auch effizienter und kürzer mit einem Set:
Javascript:
const data = [
  {
   category: 'a'
  },
  {
   category: 'b'
  },
  {
    category: 'a'
  }
];

// Oneliner!
const allCategories = new Set(data.map(_ => _.category));

// Wenn du es als Array haben möchtest
const allCategoriesAsArray = Array.from(allCategories);
document.body.innerHTML = JSON.stringify(allCategoriesAsArray);
Live-Demo: Edit fiddle - JSFiddle
 
Zurück