2013-09-30 7 views
61

Ich habe dieses Array. Wie verwende ich den Unterstrich '_.sortBy', um ihn nach Startdatum zu sortieren?Array mit Objektsortierung mit Underscore sortBy

[ 
    { 
     id: 'oljw832021kjnb389xzll323jk', 
     start: { dateTime: '2013-09-26T13:30:00-07:00' }, 
     end: { dateTime: '2013-09-26T14:30:00-07:00' }, 
    }, 
    { 
     id: 'ed7l5tmckdp0lm90nvr4is3d4c', 
     start: { dateTime: '2013-09-26T15:30:00-07:00' }, 
     end: { dateTime: '2013-09-26T16:30:00-07:00' }, 
    }, 
    { 
     id: 'etmasdsackdp0kjl0nvrkopioqw', 
     start: { dateTime: '2013-09-26T18:00:00-07:00' }, 
     end: { dateTime: '2013-09-26T19:00:00-07:00' }, 
    } 
] 

Antwort

145

Verwenden Sie eine Iterator-Funktion, nicht eine einzelne Zeichenfolge für eine Eigenschaft:

_.sortBy(arr, function(o) { return o.start.dateTime; }) 
+0

gibt es in aufsteigender Reihenfolge, aber wie man es absteigend sortieren Reihenfolge des Datums? – Robin

+5

@RobinAT: Sie können einfach die Datetime – Bergi

+14

negieren, wenn Sie in absteigender Reihenfolge tun möchten, dann tun Sie einfach arr.reverse() – JrBriones

1

Ich tat es auf diese Weise:

var sorted = _(list).sortBy(
        function (item) {       
         return [new Date(item.effectiveDate).getTime(), item.batchId]; 
        }), "batchId"); 

Wenn Sie es wünschen absteigend dann ist es die gleiche Sache aber * -1

I In diesem Beispiel, das ich nach zwei Feldern sortiere, können Sie die item.batchId vergessen.

Ich hoffe, das hilft jemandem.

Verwandte Themen