网站搜索

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. 计时器1于2019年1月17日晚上11点开始,并在第二天结束。该计时器应归类于2019年1月17日(1个计时器)
  2. 定时器2和定时器3位于2019年01月18日,应归入2019年01月18日(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/2019(1 个计时器),但我需要三个组。我知道上面的代码逻辑是错的。

我正在使用 lodash 进行分组。任何线索都将不胜感激。谢谢。

答案#1

你需要在条件中添加当前日期,因为你的逻辑也考虑了当前日期,即 if(start == end) return start elseif(start < end && end==currDate) return start elseif(start < end && end>currDate) return end 类似这样的效果。