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

如何基于工作日小时数组实现任务的间隔显示设置?

解决方案

方法一:固定间隔(每隔一行显示任务)

如果需要严格按照示例中“每隔一行显示一次清洁任务”的规则,同时控制总任务次数不超过设定值,可以用以下代码:

let daySchedule = ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00"];
let taskQuota = 2; // 每日需执行的任务次数
let taskDescription = "Cleaning";
let completedTasks = 0;

// 遍历日程数组生成结果
for (let i = 0; i < daySchedule.length; i++) {
  let scheduleLine;
  // 奇数索引(从0开始)且未用完任务配额时,渲染加粗的清洁任务
  if (i % 2 === 1 && completedTasks < taskQuota) {
    scheduleLine = `**${daySchedule[i]} - ${taskDescription}**`;
    completedTasks++;
  } else {
    scheduleLine = `${daySchedule[i]} - Coffee break`;
  }
  // 输出结果(可根据需求替换为DOM操作或其他逻辑)
  console.log(scheduleLine);
}

方法二:均匀分布任务(适配不同任务次数)

如果需要根据设定的任务次数,在整个时间段内均匀分配清洁任务,而不是固定间隔一行,可使用以下逻辑:

let daySchedule = ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00"];
let taskQuota = 2; // 每日需执行的任务次数
let taskDescription = "Cleaning";
let defaultTask = "Coffee break";

// 计算任务间隔,确保任务均匀分布
const interval = Math.floor(daySchedule.length / (taskQuota + 1));
let nextTaskPosition = interval;
let completedTasks = 0;

for (let i = 0; i < daySchedule.length; i++) {
  let scheduleLine = `${daySchedule[i]} - ${defaultTask}`;
  
  if (i === nextTaskPosition && completedTasks < taskQuota) {
    scheduleLine = `**${daySchedule[i]} - ${taskDescription}**`;
    completedTasks++;
    nextTaskPosition += interval;
  }
  
  console.log(scheduleLine);
}

代码说明

  • 两种方法都通过completedTasks变量控制任务次数,避免超过设定的taskQuota。
  • 方法一适合固定交替显示的场景,方法二适合需要均匀分散任务的场景。
  • 最终输出的清洁任务用**包裹实现加粗效果,和示例格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:10:36