Sortieren eines Arrays mit Objekten
kprogrammer
- javascript
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
@@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.:
Date
-Objekt machen.LLAP 🖖
Danke, das funktioniert. Und das mit dem Datum hatte ich auch schon so, hatte es hier nur was vereinfacht.
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.
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))