69

私はこの配列を持っています。アンダースコア '_.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' },
    }
]
4

3 に答える 3

165

プロパティに単一の文字列ではなく、イテレータ関数を使用します。

_.sortBy(arr, function(o) { return o.start.dateTime; })
于 2013-09-30T09:24:48.963 に答える
2

私はこのようにしました:

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");

この例では、2 つのフィールドで並べ替えています。item.batchId は忘れてください。

これが誰かに役立つことを願っています。

于 2015-11-24T17:53:32.923 に答える