Sort an array of dates
Sort dates ascending or descending without changing the input.
function sortDates({ dates, order = 'asc' }) { const sorted = [...dates].sort((a, b) => Date.parse(a) - Date.parse(b)); return order === 'desc' ? sorted.reverse() : sorted; }
Input & expected output
Input
{
"dates": [
"2026-10-28",
"2026-01-01",
"2026-05-05"
]
}Expected output
[
"2026-01-01",
"2026-05-05",
"2026-10-28"
]The edge case
Input
{
"dates": [
"2026-01-01",
"2026-10-28"
],
"order": "desc"
}Expected output
[
"2026-10-28",
"2026-01-01"
]Know the limits
- The original descending comparator returned a boolean, which sort treats inconsistently; a numeric difference is required. It also sorted in place.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Sort an array of dates from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Uses a numeric comparator on a copy; the original descending comparator returned a boolean and sorted in place. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Compare two dates — Compare validated ISO calendar dates in UTC and return -1, 0 or 1.
- Add AM PM suffix to an hour — Turn an hour from 0 to 23 into a 12-hour label with am or pm.
- Calculate the number of days between two dates — Count whole calendar days between two YYYY-MM-DD dates.