Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
166
rated 0 times [  170] [ 4]  / answers: 1 / hits: 145209  / 8 Years ago, mon, december 5, 2016, 12:00:00

Given the following array of objects, I need to ascending sort them by the date field.


var myArray = [
{
name: "Joe Blow",
date: "Mon Oct 31 2016 00:00:00 GMT-0700 (PDT)"
},
{
name: "Sam Snead",
date: "Sun Oct 30 2016 00:00:00 GMT-0700 (PDT)"
},
{
name: "John Smith",
date: "Sat Oct 29 2016 00:00:00 GMT-0700 (PDT)"
}
];

In the above example, the final result would be John Smith, Sam Snead, and Joe Blow.


I am trying to use lodash's _.sortBy(), but I can't get any sorting to take place no matter how I try to use it:


_.sortBy(myArray, function(dateObj) {
return dateObj.date;
});

or


_.sortBy(myArray, 'date');

What do I need to change to get my array sorted properly? I also have Moment.js, so I can use it to format the date string if needed. I tried converting the date property using .unix(), but that didn't make a difference.


Thanks.


More From » sorting

 Answers
8

You don't really need lodash. You can use JavaScript's Array.prototype.sort method.



You'll need to create Date objects from your date strings before you can compare them.





var myArray = [{
name: Joe Blow,
date: Mon Oct 31 2016 00:00:00 GMT-0700 (PDT)
}, {
name: Sam Snead,
date: Sun Oct 30 2016 00:00:00 GMT-0700 (PDT)
}, {
name: John Smith,
date: Sat Oct 29 2016 00:00:00 GMT-0700 (PDT)
}];

myArray.sort(function compare(a, b) {
var dateA = new Date(a.date);
var dateB = new Date(b.date);
return dateA - dateB;
});

console.log(myArray);




[#59816] Thursday, December 1, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
masonm

Total Points: 167
Total Questions: 87
Total Answers: 103

Location: Rwanda
Member since Wed, Jun 8, 2022
2 Years ago
masonm questions
;