Skip to main content

How to Get the Max or Min Date in an Array in JavaScript

Finding the earliest (minimum) or latest (maximum) date in an array is a common requirement for tasks like finding the most recent update, identifying the oldest record, or establishing the boundaries of a dataset.

This guide will teach you the modern, standard methods for finding the min/max date in an array of Date objects and in an array of objects with date properties. You will learn the intuitive approach using map() and a more efficient, single-pass solution using reduce().

The Core Concept: Comparing Dates via Timestamps​

The key to finding the max or min date is to understand that when JavaScript's Math.max() or Math.min() functions receive a Date object, they implicitly convert it to its numeric representation: the timestamp (the number of milliseconds since the Unix Epoch).

const myDate = new Date();

// These two lines are effectively the same
console.log(Number(myDate));
console.log(myDate.getTime());

By leveraging this automatic conversion, we can use standard math functions to find the "largest" or "smallest" date.

Scenario 1: Finding the Max/Min Date in an Array of Date Objects​

If you have a simple array of Date objects, the solution is a concise two-step process.

For example, we want to find the earliest and latest dates from an array of Date objects.

// Problem: Find the min and max dates in this array.
const dates = [
new Date('2025-10-27'),
new Date('2025-09-15'),
new Date('2026-01-10'),
];

Recommended Solution

  1. Find the Timestamp: Use Math.max() or Math.min() with the spread syntax (...) to get the extreme timestamp from the array.
  2. Create a New Date: Pass this resulting timestamp to the new Date() constructor to convert it back into a Date object.
const dates = [
new Date('2025-10-27'),
new Date('2025-09-15'),
new Date('2026-01-10'),
];

// --- Find the Maximum Date ---
const maxTimestamp = Math.max(...dates);
const maxDate = new Date(maxTimestamp);
console.log('Max Date:', maxDate.toDateString()); // Output: Max Date: Sat Jan 10 2026

// --- Find the Minimum Date ---
const minTimestamp = Math.min(...dates);
const minDate = new Date(minTimestamp);
console.log('Min Date:', minDate.toDateString()); // Output: Min Date: Mon Sep 15 2025

Output:

Max Date: Sat Jan 10 2026
Min Date: Mon Sep 15 2025

Scenario 2: Finding the Max/Min Date in an Array of Objects​

More often, your dates will be a property within a larger object. The logic is very similar, but with an extra map() step.

For example, we want to find the latest date from an array of event objects.

// Problem: Find the latest date from this array of objects.
const events = [
{ name: 'Event A', date: '2025-11-14T10:00:00Z' },
{ name: 'Event B', date: '2025-09-24T12:00:00Z' },
{ name: 'Event C', date: '2026-07-17T14:00:00Z' },
];

Recommended Solution:

  1. map(): First, create a new array containing only the Date objects (or their timestamps).
  2. Proceed as before with Math.max() and new Date().
const events = [
{ name: 'Event A', date: '2025-11-14T10:00:00Z' },
{ name: 'Event B', date: '2025-09-24T12:00:00Z' },
{ name: 'Event C', date: '2026-07-17T14:00:00Z' },
];

// 1. Create an array of Date objects
const dateObjects = events.map(event => new Date(event.date));

// 2. Find the max timestamp and convert back to a Date
const maxDate = new Date(Math.max(...dateObjects));

console.log('Latest Event Date:', maxDate.toDateString());
// Output: Latest Event Date: Fri Jul 17 2026

Output:

Latest Event Date: Fri Jul 17 2026

An Alternative for Scenario 2: Using reduce()​

While the map() approach is very readable, it requires creating an intermediate array. For very large datasets, the reduce() method can be more performant as it finds the result in a single pass.

For example, this function iterates through the array, keeping track of the "best" object found so far.

const events = [
{ name: 'Event A', date: new Date('2025-11-14') },
{ name: 'Event B', date: new Date('2026-07-17') },
{ name: 'Event C', date: new Date('2025-09-24') },
];

const latestEvent = events.reduce((latest, current) => {
// Compare the dates and return the object with the later date
return latest.date > current.date ? latest : current;
});

console.log('Latest Event Object:', latestEvent);
// Output: { name: 'Event B', date: ... }
note

This is a powerful functional approach that returns the entire object, not just the date.

Conclusion​

Finding the maximum or minimum date in an array is a simple task once you understand that Date objects can be compared as numbers.

  • The core principle is to use Math.max() or Math.min() on the Date objects (or their timestamps) and then convert the result back to a Date with new Date().
  • For an array of Date objects, you can apply this directly using the spread syntax (...).
  • For an array of objects, first use .map() to extract an array of dates, or use the more performant .reduce() method to find the desired object in a single pass.