kprogrammer: Sortieren eines Arrays mit Objekten

Hallo, Ich habe folgendes Problem: Ich habe ein Array erstellt, in dem jeweils Personen aufgelistet sind. Dabei habe ich für jede Person darin ein Objekt erstellt, in dem jeweils der Vor- und Nachname sowie das Geburtsdatum vermerkt sind. Das sieht dann so aus:

entry = {
  	name: "Mustermann",
  	vorname: "Max",
  	geburtstag:"01.01.2001"};
array.push(entry);

Wie kann ich jetzt das Array alphabetisch nach den Nachnamen sortieren, also dass eine Person mit einem Nachnamen mit A vor einer mit B steht usw.? Ich hoffe jemand kann mir helfen. Viele Grüße kprogrammer

akzeptierte Antworten

  1. @@kprogrammer

    Wie kann ich jetzt das Array alphabetisch nach den Nachnamen sortieren, also dass eine Person mit einem Nachnamen mit A vor einer mit B steht usw.?

    Wie in MDN Array.prototype.sort() unter „Objekte können anhand der Werte eines ihrer Eigenschaften sortiert werden“ beschrieben.

    geburtstag:"01.01.2001"

    Das halte ich für keine so gute Idee. Besser: das Datum im ISO-8601-Format, also: geburtstag: "2001-01-01"

    Vorteile u.a.:

    • Du kannst das einfach zu einem Date-Objekt machen.
    • Du kannst auch nach Geburtsdaten alphanumerisch sortieren.

    LLAP 🖖

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    1. Danke, das funktioniert. Und das mit dem Datum hatte ich auch schon so, hatte es hier nur was vereinfacht.

  2. Tach!

    Wie kann ich jetzt das Array alphabetisch nach den Nachnamen sortieren, also dass eine Person mit einem Nachnamen mit A vor einer mit B steht usw.?

    Mit der Methode sort() des Arrays und der Übergabe einer benutzerdefinierten Vergleichsfunktion. Auf der verlinkten Seite entspricht das Beispiel vor dem Abschnitt Examples deinem Anwendungsfall.

    dedlfix.

  3. entry = { name: "Mustermann", vorname: "Max", geburtstag:"01.01.2001"}; array.push(entry);

    Wie kann ich jetzt das Array alphabetisch nach den Nachnamen sortieren, also dass eine Person mit einem Nachnamen mit A vor einer mit B steht usw.?

    Du brauchst die sort-Funktion für den Sortieralgorithmus und localeCompare für den Vergleich der Nachnamen. Die Sortierung nach Nachnamen unterscheidet sich je nach Sprachen, die Reihenfolge wird von der sogenannten Kollation bestimmt. Die kannst du mit den optionalen Parametern von localeCompare einstellen oder du überlässt es dem Browser heuristisch eine passende Kollation für den Nutzer zu finden.

    array.sort((a, b) => a.name.localeCompare(b.name))