Sortieren von Objektarrays nach Datumseigenschaft
Problem: Sie haben ein Array von Objekten mit einer Datumseigenschaft und möchten um es in absteigender Reihenfolge basierend auf dem Datum zu sortieren, das dem am nächsten kommt vorhanden.
Lösung:
Verwenden eines benutzerdefinierten Komparators:
Ein Ansatz besteht darin, die integrierte Sortierung zu verwenden( )-Methode zusammen mit einer benutzerdefinierten Komparatorfunktion. Die Komparatorfunktion nimmt zwei Objekte als Argumente, a und b, und gibt einen negativen, positiven oder Nullwert zurück, wenn a vor b, nach b stehen soll bzw. wenn sie an der gleichen Position bleiben sollen.
Zum Sortieren nach Datum würde die Komparatorfunktion die Datumszeichenfolgen in JavaScript-Daten umwandeln und diese subtrahieren:
array.sort(function(a, b) { return new Date(b.date) - new Date(a.date); });
Generisch Lösung:
Eine allgemeinere Lösung besteht darin, eine benutzerdefinierte sortBy()-Funktion zu definieren, die eine Schwartz'sche Transformation für das Array durchführt. Mit dieser Funktion kann nach jeder Eigenschaft sortiert werden, nicht nur nach dem Datum.
(function() { if (!Array.prototype.sortBy) Array.prototype.sortBy = sb; function sb(f) { // ... implementation } })();
Mit dieser benutzerdefinierten Funktion können Sie wie folgt nach der Datumseigenschaft sortieren:
array.sortBy(function(o) { return o.date });
Umgang mit komplexen Datumsvergleichen:
Wenn Ihre Datumseigenschaft nicht direkt vergleichbar ist, können Sie daraus einen vergleichbaren Wert extrahieren, z. B. ein JavaScript-Datum Objekt:
array.sortBy(function(o) { return new Date(o.date) });
Sortieren nach mehreren Kriterien:
Sie können auch die Funktion sortBy() verwenden, um nach mehreren Kriterien zu sortieren. Geben Sie einfach ein Array von Werten aus der Komparatorfunktion zurück:
// Sort by date, then score (reversed), then name array.sortBy(function(o) { return [o.date, -o.score, o.name] });
Das obige ist der detaillierte Inhalt vonWie kann ich in JavaScript ein Array von Objekten nach Datum in absteigender Reihenfolge sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!