📌  相关文章
📜  在 JavaScript 中按日期对对象数组进行排序(1)

📅  最后修改于: 2023-12-03 15:23:10.116000             🧑  作者: Mango

在 JavaScript 中按日期对对象数组进行排序

在 JavaScript 中,我们经常需要对日期(Date)进行排序。本文将介绍如何对包含日期的对象数组进行排序。

准备工作

为了演示排序,我们首先需要创建一个对象数组。

const data = [
  { id: 1, name: "Alice", date: "2020-11-28" },
  { id: 2, name: "Bob", date: "2020-11-26" },
  { id: 3, name: "Charlie", date: "2020-11-30" },
  { id: 4, name: "David", date: "2020-11-29" }
];

上面的数组中每个对象包含一个独立的日期字符串 date。我们将使用这个日期来进行排序。

排序

使用 JavaScript 内置的 Array.sort() 方法可以对数组进行排序。该方法可以接受一个比较函数作为参数,用于指定排序的方式。

我们将创建一个比较函数,用于比较两个对象的日期:

function compare(a, b) {
  const dateA = new Date(a.date);
  const dateB = new Date(b.date);

  return dateA - dateB;
}

data.sort(compare);

上面的代码首先将日期字符串转换为日期对象,并将它们存储在 dateAdateB 中。然后,比较函数返回两个日期之间的差值。如果 dateAdateB 更早,那么差值将是负数,导致 a 的位置在 b 前面。

最后,我们将使用 sort() 方法对数组进行排序。

完整代码

下面是完整的代码片段,以便参考:

const data = [
  { id: 1, name: "Alice", date: "2020-11-28" },
  { id: 2, name: "Bob", date: "2020-11-26" },
  { id: 3, name: "Charlie", date: "2020-11-30" },
  { id: 4, name: "David", date: "2020-11-29" }
];

function compare(a, b) {
  const dateA = new Date(a.date);
  const dateB = new Date(b.date);

  return dateA - dateB;
}

data.sort(compare);
总结

JavaScript 中使用 sort() 方法可以对日期进行排序。我们可以编写一个比较函数来指定排序方式。该函数应该返回一个值,用于比较两个对象的顺序。sortBy()方法也是日期排序的常用方法,但需要使用插件,本文未作介绍。