Sorting an Array of Dates in JavaScript

Devanshu Agarwal

Written by Devanshu Agarwal /

In JavaScript, arrays can be sorted in ascending or descending order using the sort() method. By default, the sort() method sorts the elements of an array as strings, which may not always produce the desired result when working with dates. In this article, we will learn how to sort an array of dates in JavaScript.

Converting Dates to Timestamps

The first step in sorting an array of dates is to convert the dates to timestamps. Timestamps are numerical representations of a specific point in time, and are easier to compare and sort than dates. In JavaScript, you can convert a date to a timestamp using the getTime() method.

Sorting Dates in Ascending Order

To sort an array of dates in ascending order, you need to provide a comparison function as an argument to the sort() method. The comparison function should subtract the first date from the second date and return the result. If the result is negative, it indicates that the first date is less than the second date, and the two dates should be swapped in the sorted array. If the result is positive, it indicates that the first date is greater than the second date, and the two dates should not be swapped.

Here's the code to sort an array of dates in ascending order:

JS
var dates = [
  new Date("2022-12-30"),
  new Date("2022-11-15"),
  new Date("2022-01-01")
];

dates.sort(function(a, b) {
  return a.getTime() - b.getTime();
});

console.log(dates);

The output of the code will be:

[
  Tue Jan 01 2022 00:00:00 GMT+0000 (Greenwich Mean Time),
  Fri Nov 15 2022 00:00:00 GMT+0000 (Greenwich Mean Time),
  Sat Dec 30 2022 00:00:00 GMT+0000 (Greenwich Mean Time)
]

Sorting Dates in Descending Order

To sort an array of dates in descending order, you can modify the comparison function to subtract the second date from the first date instead of the first date from the second date.

Here's the code to sort an array of dates in descending order:

JS
var dates = [
  new Date("2022-12-30"),
  new Date("2022-11-15"),
  new Date("2022-01-01")
];

dates.sort(function(a, b) {
  return b.getTime() - a.getTime();
});

console.log(dates);

The output of the code will be:

[
  Sat Dec 30 2022 00:00:00 GMT+0000 (Greenwich Mean Time),
  Fri Nov 15 2022 00:00:00 GMT+0000 (Greenwich Mean Time),
  Tue Jan 01 2022 00:00:00 GMT+0000 (Greenwich Mean Time)
]

Conclusion

In this article, we learned how to sort an array of dates in JavaScript. By converting the dates to timestamps using the getTime() method, we can easily compare and sort the dates in ascending or descending order. The sort() method in JavaScript is a powerful tool for manipulating arrays, and can be used to sort arrays of any type of data, not just dates. Whether you're a beginner or an experienced JavaScript developer, it's a good idea to familiarize yourself with this method and the various ways it can be used.