1267 Stimmen

Wie sortiert man ein Objekt-Array nach Datumseigenschaften?

Angenommen, ich habe ein Array mit einigen Objekten:

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, beginnend mit dem Datum, das dem aktuellen Datum und der aktuellen Uhrzeit am nächsten liegt? Beachten Sie, dass das Array viele Objekte haben kann, aber der Einfachheit halber habe ich 2 verwendet.

Würde ich die Sortierfunktion und einen benutzerdefinierten Komparator verwenden?

6voto

Hier ist der kürzeste Weg zur Lösung Ihres Problems.

  var array = [{id: 1, date: 'Mar 12 2012 10:00:00 AM'}, {id: 2, date: 'Mar 8 2012 08:00:00 AM'}];

  var sortedArray = array.sort((a,b) => Date.parse(new Date(a.date)) - Date.parse(new Date(b.date)));

6voto

Rajiv Shrivastava Punkte 567
Adding absolute will give better results

var datesArray =[
      {"some":"data1","date": "2018-06-30T13:40:31.493Z"},
      {"some":"data2","date": "2018-07-04T13:40:31.493Z"},
      {"some":"data3","date": "2018-06-27T13:40:54.394Z"}
   ]

var sortedJsObjects = datesArray.sort(function(a,b){ 
    return Math.abs(new Date(a.date) - new Date(b.date)) 
});

4voto

Yanov Punkte 589

Vielen Dank, Ganesh Sanap. Sortieren von Artikeln nach Datumsfeld von alt nach neu. Verwenden Sie es

 myArray = [{transport: "Air",
             load: "Vatican Vaticano",
             created: "01/31/2020"},
            {transport: "Air",
             load: "Paris",
             created: "01/30/2020"}] 

        myAarray.sort(function(a, b) {
            var c = new Date(a.created);
            var d = new Date(b.created);
            return c-d;
        });

3voto

Shravan Shetty Punkte 57
["12 Jan 2018" , "1 Dec 2018", "04 May 2018"].sort(function(a,b) {
    return new Date(a).getTime() - new Date(b).getTime()
})

2voto

daviestar Punkte 4293

Wenn Sie wie ich ein Array mit Daten haben, die wie folgt formatiert sind YYYY[-MM[-DD]] Wenn Sie bestimmte Daten vor weniger bestimmten Daten anordnen möchten, habe ich diese praktische Funktion entwickelt:

function sortByDateSpecificity(a, b) {
  const aLength = a.date.length
  const bLength = b.date.length
  const aDate = a.date + (aLength < 10 ? '-12-31'.slice(-10 + aLength) : '')
  const bDate = b.date + (bLength < 10 ? '-12-31'.slice(-10 + bLength) : '')
  return new Date(aDate) - new Date(bDate)
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X