2013-09-30 43 views
61

我有這個數組。如何使用下劃線'_.sortBy'根據開始日期對其進行排序?使用下劃線對象排序的數組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' }, 
    } 
] 

回答

145

使用迭代器的功能,而不是一個屬性的單一字符串:

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

它以升序排列,但如何按日期降序排序? – Robin

+5

@RobinAT:如果你想按降序排列,你可以否定日期時間 – Bergi

+14

,那麼只需要做arr.reverse() – JrBriones

1

我就是這麼做的:

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

如果你想它降那是同樣的事情但是* -1

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

I在這個例子中,我按兩個字段排序,你可以忘記item.batchId。

希望這可以幫助別人。