我正在构建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
);
});
就像您在图像上看到的那样,它按小时和分钟对数组进行排序,但需要先按日期而不是小时和分钟对数组进行排序...
答案 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的说明。