Created
February 8, 2012 20:15
-
-
Save onpubcom/1772996 to your computer and use it in GitHub Desktop.
How to Sort an Array of Dates with JavaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script type="text/javascript"> | |
// First let's create an array of JavaScript Date | |
// objects. | |
// More info about the Date class: | |
// http://w3schools.com/js/js_obj_date.asp | |
var dates = [ | |
new Date(2010, 4, 10, 10, 07, 16), | |
new Date(2010, 4, 8, 9, 16, 09), | |
new Date(2010, 3, 30, 0, 15, 49), | |
new Date(2010, 3, 8, 10, 08, 35)]; | |
// Now we will define our date comparison functions. These are callbacks | |
// that we will be providing to the array sort method below. | |
var date_sort_asc = function (date1, date2) { | |
// This is a comparison function that will result in dates being sorted in | |
// ASCENDING order. As you can see, JavaScript's native comparison operators | |
// can be used to compare dates. This was news to me. | |
if (date1 > date2) return 1; | |
if (date1 < date2) return -1; | |
return 0; | |
}; | |
var date_sort_desc = function (date1, date2) { | |
// This is a comparison function that will result in dates being sorted in | |
// DESCENDING order. | |
if (date1 > date2) return -1; | |
if (date1 < date2) return 1; | |
return 0; | |
}; | |
// Finally, we are now able to call the sort method on our array of dates. | |
// More info about array sorting: http://w3schools.com/jsref/jsref_sort.asp | |
// First let's sort the array in ascending order. | |
dates.sort(date_sort_asc); | |
// Now let's output the results to the page to show that the dates are now | |
// sorted in ascending order. | |
document.write('<p>Dates sorted in ascending order (oldest to newest):</p>'); | |
for (var i = 0; i < dates.length; i++) { | |
document.write(i + ': ' + dates[i] + '<br>'); | |
} | |
// Now let's sort the dates in descending order and output the results. | |
dates.sort(date_sort_desc); | |
document.write('<p>Dates sorted in descending order (newest to oldest):</p>'); | |
for (var i = 0; i < dates.length; i++) { | |
document.write(i + ': ' + dates[i] + '<br>'); | |
} | |
// That's all there is to it! | |
// From: http://onpub.com/index.php?s=7&a=109 | |
</script> |
@obonyojimmy that is not working in my environment. Node.js version 9.
Won't work because it returns NaN , compare and return yourself @lancedolan
I think @obonyojimmy 's functions actually sort in descending order. Switch to dateArray.sort((a,b)=> a-b)
for ascending.
For anyone who comes across this looking from a TS compliant approach.
dataArray.sort((a,b)=> Number(a)-Number(b))
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks!