我有一个数组,最多可以包含一周中的所有日子
["mon", "tues", "wed", "thur", "fri", "sat", "sun"]
我正在尝试找出一个可以产生以下内容的好脚本
数组包含
["mon", "tues", "fri", "sat", "sun"]
输出一串 Mon-Tues & Fri - Sun
我知道我显然可以用 if 语句做到这一点,但我想不出一个好的/聪明的方法来做到这一点。
最佳答案
const days = ["mon", "tues", "wed", "thur", "fri", "sat", "sun"];
function group(arr){
let result = [ [] ], current = result [0];
for(const day of arr){
if(days.indexOf(current[current.length-1]) + 1 === days.indexOf(day)) {
current.push(day);
} else {
current = [day];
result.push(current);
}
}
return result
.filter(el => el.length)
.map(el => el.length > 1 ? el[0] +"-"+ el.pop() : el[0])
.join(" & ");
}
上面的代码将数组分组为连续的天组,然后加入它们:
group(["mon", "tues","thur", "fri","sun"])
// [[ "mon","tues"], ["thur","fri"], ["sun"]]
// mon - tues & thur - fri & sun
关于javascript - 如果彼此相邻,则一起加入一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45896211/