Javascript 通过momentjs获得连续几天

Javascript 通过momentjs获得连续几天,javascript,momentjs,Javascript,Momentjs,我有一个字符串,其中包含一周中的几天: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 也可以是: Monday, Tuesday 此外: 我想要实现的是,如果连续两天以上将它们“合并”并显示为: 星期一、星期二、星期三、星期四、星期五、星期六、星期日-将是星期一-星期日; 星期一、星期二——就这样; 周四,周五,周六-周四-周六 我只想使用moment.js或javascript,而不使用其他插件(如range)

我有一个字符串,其中包含一周中的几天:

Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
也可以是:

Monday, Tuesday
此外:

我想要实现的是,如果连续两天以上将它们“合并”并显示为: 星期一、星期二、星期三、星期四、星期五、星期六、星期日-将是星期一-星期日; 星期一、星期二——就这样; 周四,周五,周六-周四-周六

我只想使用moment.js或javascript,而不使用其他插件(如range)。
提前谢谢

这似乎很管用

const weekDaysMap=新地图([
[“星期一”,0],
[“星期二”,1],
[“星期三”,2],
[“星期四”,3],
[“星期五”,4],
[“星期六”,5],
[“星期日”,6]
]);
函数getDayRanges(天){
常数范围=[];
让range=[days[0]],d=weekDaysMap.get(days[0]);
for(设i=1;iconsole.log(getDayRanges([“星期一”、“星期二”、“星期三”、“星期六”、“星期日”)).map(r=>r.join(“–”).join(“,”)
我们可以创建一个包含天数列表(隐式索引)的星期日(dow)数组

如果一个天数列表是连续的,我们将替换为Startday-Endday,不过如果只有两天,我们就不会麻烦了

我假设一周“结束”,例如周一被视为连续到周日。如果不是,这是一个很容易的调整。我们将用isConsecutive替换函数isModularConsecutive

函数isModularConsecutive(a,模数){
return!isNaN(a.reduce((上一个,当前,索引)=>(索引===0 | |当前===((上一个+1)%modules)?当前:NaN));
}
函数格式列表(输入){
常数道指=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”];
让inputArray=input.split(/\s*\,\s*/);
让现实指数=inputArray.map(el=>dow.findIndex(d=>d==el));

if(!isModularConsecutive(实施索引,7)| |实施索引。长度控制台。日志(“输入:”+“输入+”,“结果:”+“格式列表(输入)+“”)
我认为moment.js在这里没有多大帮助。@0stone0解析一天并检查第二天的值是否为+1,但没有成功。@D.Pardal你有什么建议吗?你只是问如何获取字符串的第一个和最后一个项/子字符串?你需要
moment.js
做什么?看不到任何日期,只是一个简单的
s字符串
Thursday, Friday, Saturday