You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中按连续顺序分组数组内工作日元素的方案求助

实现连续工作日按相同营业时间分组

问题分析

原代码用Lodash的groupBy只能将所有营业时间相同的工作日归为一组,但无法区分非连续的同时间工作日(比如示例中的周一/周二与周四,营业时间相同但不连续,需拆分为两组)。要实现需求,需按工作日顺序遍历数组,动态判断当前项与前一项是否满足「连续工作日+相同营业时间」的条件,再进行分组。

实现代码

const array = [
  { weekDay: 'Monday', hoursInfo: '11:00am-8:00pm' },
  { weekDay: 'Tuesday', hoursInfo: '11:00am-8:00pm' },
  { weekDay: 'Wednesday', hoursInfo: '9:00am-11:00am' },
  { weekDay: 'Thursday', hoursInfo: '11:00am-8:00pm' },
  { weekDay: 'Friday', hoursInfo: '11:00am-9:00pm' },
  { weekDay: 'Saturday', hoursInfo: '11:00am-9:00pm' },
  { weekDay: 'Sunday', hoursInfo: 'Closed' },
];

// 定义工作日顺序映射,用于快速判断是否连续
const weekDayOrder = {
  Monday: 0,
  Tuesday: 1,
  Wednesday: 2,
  Thursday: 3,
  Friday: 4,
  Saturday: 5,
  Sunday: 6
};

// 按连续工作日+相同营业时间分组
const grouped = [];
array.forEach(item => {
  const lastGroup = grouped[grouped.length - 1];
  if (lastGroup && 
      lastGroup.hours === item.hoursInfo && 
      weekDayOrder[item.weekDay] === weekDayOrder[lastGroup.days.at(-1)] + 1) {
    // 满足连续且时间相同,加入当前组
    lastGroup.days.push(item.weekDay);
  } else {
    // 不满足条件,新建分组
    grouped.push({
      days: [item.weekDay],
      hours: item.hoursInfo
    });
  }
});

// 转换为期望的字符串格式
const resultStr = grouped.map(group => {
  const dayRange = group.days.length > 1 
    ? `${group.days[0]}-${group.days.at(-1)}` 
    : group.days[0];
  return `${dayRange}: ${group.hours}`;
}).join('\n');

document.getElementById("result").textContent = resultStr;
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<div id="result" style="white-space: pre-line;"></div>

关键逻辑说明

  • 工作日顺序映射:用对象存储每个工作日的索引值,通过索引差快速判断两个工作日是否连续(当前索引=前一个索引+1)
  • 动态分组:遍历数组时,实时检查当前项是否与最后一个分组的营业时间一致,且为连续工作日,满足则合并到当前组,否则新建分组
  • 格式转换:将每个分组的工作日数组转换为范围字符串(如['Monday','Tuesday']转为Monday-Tuesday),最终拼接成目标输出格式

输出效果

Monday-Tuesday: 11:00am-8:00pm
Wednesday: 9:00am-11:00am
Thursday: 11:00am-8:00pm
Friday-Saturday: 11:00am-9:00pm
Sunday: Closed

内容的提问来源于stack exchange,提问作者Ragupathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:09:26