- bounty将在13小时后过期**。回答此问题可获得+50声望奖励。player1ykt希望引起更多人关注此问题。
我需要对一个日期数组进行分组,然后将这组日期格式化为日程格式。
- 可能的标签包括:**
- 平日(星期一至五)
- 周末(周六和周日)
- 星期一至星期二(具有相同计划的日期范围)
- 星期三(具有唯一计划的特定日期)
- 星期四、星期六(具有相同计划的特定日期组)
- 例如:**
- 输入数据**
[
{
day: "monday",
start_time: "09:00",
end_time: "18:00"
},
{
day: "tuesday",
start_time: "09:00",
end_time: "18:00"
},
{
day: "wednesday",
start_time: "09:00",
end_time: "18:00"
},
{
id: 25,
day: "thursday",
start_time: "09:00",
end_time: "18:00"
},
{
day: "friday",
start_time: "09:00",
end_time: "18:00"
},
{
day: "saturday",
start_time: "10:00",
end_time: "17:00"
},
{
day: "sunday",
start_time: "10:00",
end_time: "17:00"
}
]
预期输出
[
{
label: 'All weekdays', // Mon-Fri
value: '09:00 - 18:00',
},
{
label: 'Weekend', // Sat-Sun
value: '10:00 - 17:00',
},
];
如果每天的start_time和end_time不同,则输出如下所示
[
{
label: 'Monday', // one day
value: '09:00 - 20:00',
},
{
label: 'Tuesday, Thursday', // specific days with same schedule
value: '10:00 - 19:00',
},
{
label: 'Wednesday', // one day
value: '12:00 - 20:00',
},
{
label: 'Friday - Sunday', // range of days with same schedule
value: '10:00 - 17:00',
},
];
带模板的代码沙箱-link
2条答案
按热度按时间uubf1zoe1#
解决OP问题的方法分为......
......可以通过
reduce
和map
ping任务直接实现,该任务将伴随一些辅助函数,例如......reduce
任务将创建一个对象,其中每个键都已经表示最终结果的value
,表示时间范围的字符串,例如'09:00 - 18:00'
,其中每个这样的键值是每个已处理项的day
值的数组(后者是表示工作日名称的字符串,既不具有特定的也不具有可靠的后者大小写,例如'monday'
或'Monday'
)。map
任务将处理上述对象的entries
,每个条目的与时间表相关的key
被赋值为最终项的value
属性,并且每个条目的与工作日相关的值(工作日名称的数组)是计算最终项的label
属性的基础。执行情况.
e3bfsja22#
我有一个类似的解决方案对我的一个项目,你可以尝试作出任何必要的更改代码,如果你不喜欢的结果。
您使用周末和工作日数组给予一个初始常量,然后比较输入的日期数据,生成所需的输出。