javascript - 按日期分组的问题
问题描述
我有一个计时器列表,例如
timer 1 => { startDate = 17/01/2019 11PM, endDate = 18/01/2019 9AM }
timer 2 => { startDate = 18/01/2019 7AM, endDate = 18/01/2019 1PM }
timer 3 => { startDate = 18/01/2019 12PM, endDate = 18/01/2019 10PM }
timer 4 => { startDate = 18/01/2019 11PM, endDate = 19/01/2019 9AM }
我需要用这个逻辑按日期分组。
- 计时器 1 从 2019 年 1 月 17 日晚上 11 点开始,到第二天结束。此计时器应归入 2019 年 1 月 17 日(1 个计时器)
- 计时器 2 和计时器 3 位于 2019 年 1 月 18 日,这应分组在 2019 年 1 月 18 日(2 个计时器)
- 计时器 4 从 18 开始,到 19 结束,应归入 19/01/201(1 个计时器)
代码:
let sortedTimers = timers.sort((a, b) => {
return a.startDate.isBefore(b.startDate) ? -1 : 1;
});
let groupedByDate: { [date: string]: Timer[] } = _.groupBy(sortedTimers, timer => {
let start = this.dateFormatter.toDayOfWeekLongDate(Timer.startDate);
let end = this.dateFormatter.toDayOfWeekLongDate(Timer.endDate);
return start == end? start:end; // wrong logic
});
这个只返回两组 1. 18/01/2019(3 个计时器) 2. 19/01/201(1 个计时器)但我需要三组。我知道上面代码中的逻辑是错误的。
我正在使用 lodash 进行分组。任何线索将不胜感激。谢谢。
解决方案
您需要在条件中添加当前日期,因为您的逻辑也考虑了当前日期,即 if(start == end) return start elseif(start < end & end==currDate) return start elseif(start < end & end >currDate) return end 有这样的效果。
推荐阅读
- openstreetmap - 如何使用 LineString 将 OSM 关系转换为 GeoJSON?
- excel - 将表格从 Excel 粘贴到 Word 后删除多余段落
- html - html 表格可滚动时始终显示滚动条
- mysql - 每日最大值的最早时间
- javascript - 在 Laravel 中创建一个动态创建另一个下拉列表的下拉列表
- java - 我如何在android中制作如下图所示的菜单
- html - JAWS 不会读取其标题列表中按钮内的标题 (INS + F6)
- html - 如何通过 div 滚动使自定义下拉菜单可移动?
- python - 当 keras 模型加载到 tensorjs 中时,它变得完全不准确
- amazon-web-services - 无法使用 SSH 或 Ping 连接到 VPC 公有子网 EC2 实例