Angenommen, ich habe eine Reihe einiger Objekte:
var array = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];
Wie kann ich dieses Array nach dem Datumselement sortieren, ab dem Datum, das dem aktuellen Datum und der aktuellen Uhrzeit am nächsten liegt? Denken Sie daran, dass das Array möglicherweise viele Objekte enthält, aber der Einfachheit halber habe ich 2 verwendet.
Würde ich die Sortierfunktion und einen benutzerdefinierten Komparator verwenden?
AKTUALISIEREN:
In meinem speziellen Fall wollte ich die Daten von den neuesten bis zu den ältesten. Es endete damit, dass ich die Logik der einfachen Funktion wie folgt umkehren musste:
array.sort(function(a, b) {
a = new Date(a.dateModified);
b = new Date(b.dateModified);
return a>b ? -1 : a<b ? 1 : 0;
});
Dadurch werden die Daten der neuesten sortiert.
javascript
datetime
ryandlf
quelle
quelle
Antworten:
Einfachste Antwort
Allgemeinere Antwort
Oder knapper:
Generische, leistungsstarke Antwort
Definieren Sie eine benutzerdefinierte nicht aufzählbare
sortBy
Funktion mithilfe einer Schwartzschen Transformation für alle Arrays:Verwenden Sie es so:
Wenn Ihr Datum nicht direkt vergleichbar ist, machen Sie daraus ein vergleichbares Datum, z
Sie können dies auch verwenden, um nach mehreren Kriterien zu sortieren, wenn Sie ein Array von Werten zurückgeben:
Weitere Informationen finden Sie unter http://phrogz.net/JS/Array.prototype.sortBy.js .
quelle
return b-a;
in der einfachen Antwort?@ Phrogz Antworten sind beide großartig, aber hier ist eine großartige, präzisere Antwort:
Verwenden der Pfeilfunktion
hier gefunden: Datum in Javascript sortieren
quelle
a - b
würde auch funktionieren. Also,array.sort((a, b) => a - b)
(es6)Nach der Korrektur des JSON sollte dies jetzt für Sie funktionieren:
quelle
Ihre Daten müssen korrigiert werden:
Nach dem Korrigieren der Daten können Sie diesen Code verwenden:
quelle
0
wo nötig zurückzukehren!Ich empfehle GitHub: Array sortBy - eine beste Implementierung einer
sortBy
Methode, die die Schwartzsche Transformation verwendetAber jetzt werden wir diesen Ansatz versuchen. Gist: sortBy-old.js .
Erstellen wir eine Methode zum Sortieren von Arrays, mit denen Objekte nach einer Eigenschaft angeordnet werden können.
Sortierfunktion erstellen
Unsortierte Daten einstellen
Es benutzen
Schließlich ordnen wir das Array nach
"date"
Eigenschaft alsstring
Wenn Sie die Groß- und Kleinschreibung ignorieren möchten, legen Sie den
"parser"
Rückruf fest:Wenn Sie das Feld "Datum" als
Date
Typ behandeln möchten :Hier können Sie mit dem obigen Beispiel spielen:
jsbin.com/lesebi
quelle
Dies sollte geschehen, wenn Ihr Datum in diesem Format vorliegt (TT / MM / JJJJ).
Dann ruf an
sortByDate(myArr);
quelle
Sie können sortBy in Unterstrichen verwenden.
http://underscorejs.org/#sortBy
Stichprobe:
quelle
Ich werde dies hier hinzufügen, da einige Verwendungen möglicherweise nicht in der Lage sind, herauszufinden, wie diese Sortiermethode invertiert werden kann.
Um nach "Kommen" zu sortieren, können wir einfach a & b wie folgt tauschen:
Beachten Sie, dass
a
sich das jetzt auf der linken Seite undb
auf der rechten Seite befindet: D!quelle
Ich persönlich verwende den folgenden Ansatz, um Daten zu sortieren.
quelle
Ich konnte die Sortierung anhand der folgenden Zeilen erreichen:
quelle
quelle
Für alle, die nach Datum sortieren möchten (UK-Format), habe ich Folgendes verwendet:
quelle
Ich habe gerade die oben abgebildete Schwartzsche Transformation genommen und als Funktion gemacht. Es wird ein
array
, die Sortierungfunction
und ein Boolescher Wert als Eingabe verwendet:quelle
Vielen Dank, dass Sie Ganesh Sanap. Sortieren von Elementen nach Datumsfeld von alt nach neu. Benutze es
quelle
Wenn Sie wie ich ein Array mit Datumsangaben haben, die so formatiert sind,
YYYY[-MM[-DD]]
dass Sie spezifischere Daten vor weniger bestimmten bestellen möchten, habe ich diese praktische Funktion entwickelt:quelle
quelle