Heim >Web-Frontend >js-Tutorial >Wie kann ich in JavaScript ein Array von Objekten nach Datum in absteigender Reihenfolge sortieren?

Wie kann ich in JavaScript ein Array von Objekten nach Datum in absteigender Reihenfolge sortieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 16:04:10790Durchsuche

How Can I Sort an Array of Objects by Date in Descending Order in JavaScript?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn