Array with object sorting with Underscore sortBy
Javascriptnode.jsSortingunderscore.jsJavascript Problem Overview
I have this array. How do I use underscore '_.sortBy' to sort it according to start date?
[
{
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' },
}
]
Javascript Solutions
Solution 1 - Javascript
Use an iterator function, not a single string for a property:
_.sortBy(arr, function(o) { return o.start.dateTime; })
Solution 2 - Javascript
I did it this way:
var sorted = _(list).sortBy(
function (item) {
return [new Date(item.effectiveDate).getTime(), item.batchId];
}), "batchId");
If you want it descending then it's the same thing but *-1
var sorted = _(list).sortBy(
function (item) {
return [new Date(item.effectiveDate).getTime()*-1, item.batchId];
}), "batchId");
In this example I am ordering by two fields, you can forget about the item.batchId.
Hope this helps someone.
Solution 3 - Javascript
var sortedItem = _.sortBy(yourArrayName, ["start"])