📅  最后修改于: 2023-12-03 15:39:48.736000             🧑  作者: Mango
在 JavaScript 中,我们可以通过 sort()
方法对数组进行排序,但是默认情况下排序方式是按照字符串的 Unicode 码值进行比较的 ,这在对日期进行排序时是不可取的。因此我们需要使用自定义的比较函数。
自定义比较函数是一个接受两个参数的函数,返回一个数字。这个数字表示第一个参数在排序后应该排在第二个参数的前面(返回负数),后面(返回正数),或与第二个参数相等(返回0)。因此,我们可以根据日期的大小关系来返回相应的数字。
function compare(a, b) {
const dateA = new Date(a.date);
const dateB = new Date(b.date);
if (dateA < dateB) {
return -1;
}
if (dateA > dateB) {
return 1;
}
return 0;
}
这里我们定义了一个 compare()
函数,接受两个参数 a
和 b
,分别表示待排序的两个数组元素。我们首先将它们转换为 Date
对象,然后进行比较。如果 dateA
小于 dateB
,则返回 -1
;如果 dateA
大于 dateB
,则返回 1
;否则返回 0
,表示它们相等。
有了自定义的比较函数,我们就可以对数组进行排序了。我们可以调用数组的 sort()
方法,将自定义的比较函数作为参数传入:
const dates = [
{ date: "2022-02-05" },
{ date: "2022-02-01" },
{ date: "2022-02-10" },
{ date: "2022-02-03" },
{ date: "2022-02-07" }
];
dates.sort(compare);
此时 dates
数组已经按照日期的大小关系进行了排序。我们可以使用 console.log()
方法来查看每个元素的日期:
dates.forEach((item) => console.log(item.date));
输出结果为:
2022-02-01
2022-02-03
2022-02-05
2022-02-07
2022-02-10
Date
再进行比较。Date
类型,我们可以直接在比较函数中进行比较。