按日期分组的问题

时间:2019-01-18 02:39:53

标签: javascript angular typescript

我有一个类似的计时器列表

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. 定时器1从17/01/2019 11PM开始并在第二天结束。此计时器应归类于17/01/2019(1个计时器)
  2. 计时器2和计时器3驻留在18/01/2019,应归类于18/01/2019(2个计时器)
  3. 计时器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进行分组。任何线索将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要在条件中添加当前日期,因为您的逻辑也要考虑当前日期,即if(start == end)return start elseif(start currDate)返回结束 那种效果。