如何解决方法排序问题,使其适合我的任务?

时间:2019-07-11 16:38:02

标签: javascript

我正在尝试按升序对日期进行排序,但是排序不正确。

我尝试了几种不同的方法来做到这一点。但是它仍然存在相同的问题。

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星期二

3 个答案:

答案 0 :(得分:1)

您的代码几乎正确;您没有调用LocalDate中的函数getTime

注意:对数字和日期进行排序的最佳方法是使用减法。

注2:将new Dateconsole.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);
    });