我有一个类似的计时器列表
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 }
我需要使用这种逻辑对日期进行分组。
代码:
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进行分组。任何线索将不胜感激。谢谢。
答案 0 :(得分:2)
您需要在条件中添加当前日期,因为您的逻辑也要考虑当前日期,即if(start == end)return start elseif(start