同时按日期和时间对数组进行排序?

时间:2019-02-12 18:00:18

标签: javascript arrays firebase angular5

我正在构建shedule应用程序,因此我需要同时按日期和时间对项目进行排序。就像您在示例中看到的那样,我只能过滤小时和分钟,并且行得通,但是我也需要过滤日期

我将日期存储在诸如YYYY-MM-DD之类的日期数据库中,将时间按小时和诸如字符串的分钟存储:例如hours:“ 08”,minuts:“ 25”。

 this.ord3ref.on("child_added", data => {
      this.ord3.push({
        key: data.key,
        data: data.val()
      });
      this.ord3.sort(
        (a, b) => a.data.hours- b.data.hours || a.data.minuts- b.data.minuts
      );
    });

enter image description here like you see on image it sorts array by hours and minuts, but its need to be sorted by dates first, that with hours and minuts

就像您在图像上看到的那样,它按小时和分钟对数组进行排序,但需要先按日期而不是小时和分钟对数组进行排序...

1 个答案:

答案 0 :(得分:1)

如果数据包含日期的键/值,那么您应该可以使用以下内容替换您的排序函数:

this.ord3.sort(
    (a, b) => {
        var dateA = new Date(a.data.date).valueOf();
        var dateB = new Date(b.data.date).valueOf();
        return a.data.hours - b.data.hours || a.data.minuts - b.data.minuts || dateA - dateB;
    }
);
可以从日期字符串中以Date格式创建

javascript YYYY-MM-DD对象。

.valueOf()方法返回距UTC时间的毫秒数-请参见MDN's的说明。