我正在尝试按升序对日期进行排序,但是排序不正确。
我尝试了几种不同的方法来做到这一点。但是它仍然存在相同的问题。
const arr = [
{ date: "01.01.2017", dayOfWeek: "Tuesday" },
{ date: "01.01.2016", dayOfWeek: "Saturday" },
{ date: "01.01.2002", dayOfWeek: "Wednesday" },
{ date: "01.01.2003", dayOfWeek: "Wednesday" }
];
const sort = arr
.sort((a, b) =>
new Date(a.date).getTime > new Date(b.date).getTime ? 1 : -1
)
.map(function(m) {
console.log(m.date, m.dayOfWeek);
});
我期望的是:
2002年1月1日星期三
2003年1月1日星期三
16 2016年1月1日星期六
16 01.01.2017星期二
但是我得到的输出是这样:
2003年1月1日星期三
2002年1月1日星期三
16 2016年1月1日星期六
16 01.01.2017星期二
答案 0 :(得分:1)
您的代码几乎正确;您没有调用LocalDate
中的函数getTime
。
注意:对数字和日期进行排序的最佳方法是使用减法。
注2:将new Date
与console.log
一起使用将得到Array.map
的数组。
undefined
答案 1 :(得分:0)
getTime
是一个函数,您需要执行它才能实际比较值:
new Date(a.date).getTime() > new Date(b.date).getTime()? 1 :-1
答案 2 :(得分:0)
您也可以在不使用getTime()
的情况下进行尝试,因为两者均为Date类型,因此可以直接进行比较。
const sort = arr
.sort( (a, b) =>
new Date(a.date) > new Date(b.date) ? 1 : -1
)
.map(function(m) {
console.log(m.date, m.dayOfWeek);
});