2013-09-30 5 views
61

Mam tę tablicę. Jak używać podkreślenia "_.sortBy" do sortowania według daty początkowej?Tablica z sortowaniem obiektów przy użyciu Sortuj podkreślenia.

[ 
    { 
     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' }, 
    } 
] 

Odpowiedz

145

Użyj funkcji iteracyjnej, nie jeden ciąg dla właściwości:

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

podaje w porządku rosnącym, ale jak posortować malejąco według daty? – Robin

+5

@RobinAT: Po prostu można zanegować datetime – Bergi

+14

, jeśli chcesz wykonać kolejność malejącą, a następnie po prostu wykonaj arr.reverse() – JrBriones

1

zrobiłem to w ten sposób:

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

Jeśli chcesz to malejąco potem to samo ale * -1

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

I W tym przykładzie zamawiam przez dwa pola, możesz zapomnieć o item.batchId.

Mam nadzieję, że to komuś pomaga.

Powiązane problemy