2013-09-30 8 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:降順で降順をしたい場合は、datetime – 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この例では2つのフィールドで注文していますが、item.batchIdは忘れてしまいます。

これは誰かを助けることを望みます。

関連する問題