javascript - 如果彼此相邻,则一起加入一周中的几天

标签 javascript

我有一个数组,最多可以包含一周中的所有日子

["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(" & ");
}

In action

上面的代码将数组分组为连续的天组,然后加入它们:

group(["mon", "tues","thur", "fri","sun"])
// [[ "mon","tues"], ["thur","fri"], ["sun"]]
// mon - tues & thur - fri & sun

关于javascript - 如果彼此相邻,则一起加入一周中的几天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45896211/

相关文章:

javascript - 组织小型 JavaScript 应用程序的好方法

javascript - 单击 jquery/js 中的搜索按钮捕获搜索 url

javascript - 如何以某种格式显示代码但以另一种格式提交?

javascript - 同时添加 2 个文件时重命名文件失败

javascript - 如何使用 jQuery 读取 data-* 属性的原始内容?

javascript - TypeError : result. 推送不起作用

javascript - Lodash isEqual 方法未给出预期结果

javascript - 调整浏览器窗口大小时调整网格大小

javascript - 如何在jquery中设置循环?

javascript - 在一个移动市场上上传应用程序时出错