DEV Community

Avnish
Avnish

Posted on

Sorting an Array of Objects by Date in JavaScript

1. Sorting Using Date Objects

The simplest approach to sort by date is leveraging JavaScript’s built-in Date object.

Example

const data = [
  { name: 'Event 1', date: new Date('2023-01-15') },
  { name: 'Event 2', date: new Date('2022-12-20') },
  { name: 'Event 3', date: new Date('2023-03-05') }
];

data.sort((a, b) => a.date - b.date);

console.log(data);
Enter fullscreen mode Exit fullscreen mode

Output

[
  { name: 'Event 2', date: 2022-12-20T00:00:00.000Z },
  { name: 'Event 1', date: 2023-01-15T00:00:00.000Z },
  { name: 'Event 3', date: 2023-03-05T00:00:00.000Z }
]
Enter fullscreen mode Exit fullscreen mode

2. Sorting Using getTime() Method

The getTime() method returns the numeric value corresponding to the time since January 1, 1970, which can be directly compared.

Example

const data = [
  { name: 'Event 1', date: new Date('2023-01-15') },
  { name: 'Event 2', date: new Date('2022-12-20') },
  { name: 'Event 3', date: new Date('2023-03-05') }
];

data.sort((a, b) => a.date.getTime() - b.date.getTime());

console.log(data);
Enter fullscreen mode Exit fullscreen mode

Output

Same as above.


3. Creating a Custom Sorting Function

For enhanced readability and reusability, define a custom sorting function.

Example

const sortByDate = (a, b) => a.date - b.date;

const data = [
  { name: 'Event 1', date: new Date('2023-01-15') },
  { name: 'Event 2', date: new Date('2022-12-20') },
  { name: 'Event 3', date: new Date('2023-03-05') }
];

data.sort(sortByDate);

console.log(data);
Enter fullscreen mode Exit fullscreen mode

Advantages

  • Easily reusable across multiple datasets.

4. Leveraging Lodash’s _.orderBy()

Lodash, a popular utility library, offers the _.orderBy() method, which allows complex sorting configurations.

Example

const _ = require('lodash');

const data = [
  { name: 'Event 1', date: new Date('2023-01-15') },
  { name: 'Event 2', date: new Date('2022-12-20') },
  { name: 'Event 3', date: new Date('2023-03-05') }
];

const sortedData = _.orderBy(data, ['date'], ['asc']);

console.log(sortedData);
Enter fullscreen mode Exit fullscreen mode

Advantages

  • Supports multi-level sorting with ease.

5. Sorting with Intl.DateTimeFormat

For internationalization and formatted date strings, Intl.DateTimeFormat can be combined with sort().

Example

const data = [
  { id: 1, date: '2022-01-15' },
  { id: 2, date: '2023-03-20' },
  { id: 3, date: '2021-09-10' }
];

data.sort((a, b) =>
  new Intl.DateTimeFormat('en-US').format(new Date(a.date)) -
  new Intl.DateTimeFormat('en-US').format(new Date(b.date))
);

console.log(data);
Enter fullscreen mode Exit fullscreen mode

Output

[
  { id: 3, date: '2021-09-10' },
  { id: 1, date: '2022-01-15' },
  { id: 2, date: '2023-03-20' }
]
Enter fullscreen mode Exit fullscreen mode

Comparison of Methods

Method Best Use Case Complexity
Using Date Objects Basic sorting with native objects Low
Using getTime() When working with timestamps Low
Custom Sorting Function Reusable and readable sorting logic Medium
Lodash’s _.orderBy() Multi-level sorting Medium
Intl.DateTimeFormat Internationalization or formatted dates High

Conclusion

Sorting an array of objects by date in JavaScript can be achieved in various ways depending on the complexity of your use case. For simple tasks, the sort() method with Date or getTime() is sufficient. For more complex scenarios, consider using Lodash or custom functions for better flexibility.

Top comments (0)