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

如何从当前工作日开始对TypeScript Map进行排序?

解决方案:从当前工作日开始循环排序销售额数据

步骤说明

要实现从当前工作日开始的循环排序,核心是先确定一周的固定顺序,再根据当前日的位置将数据拆分为两部分拼接:当前日及之后的日期在前,之前的日期在后。

实现代码(TypeScript)

首先定义一周的标准顺序(确保和你的Map键格式一致,均为英文首字母大写的星期全称):

// 定义一周的固定顺序,用于定位日期位置
const weekOrder = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

// 示例Map数据
const salesMap = new Map<string, number>([
  ['Friday', 0],
  ['Monday', 0],
  ['Saturday', 0],
  ['Sunday', 0],
  ['Thursday', 0],
  ['Tuesday', 0],
  ['Wednesday', 0],
]);

// 获取当前工作日的字符串(格式与Map键一致)
const currentDay = new Date().toLocaleDateString('en-US', { weekday: 'long' });

// 将Map转换为对象数组(也可直接处理Map的键值对)
const salesArray = Array.from(salesMap.entries()).map(([day, sales]) => ({ day, sales }));

// 排序函数:从当前日开始循环排列
const sortFromCurrentDay = (data: { day: string; sales: number }[], currentDay: string) => {
  // 先按标准星期顺序排序,确保基础顺序正确
  const sortedByWeek = [...data].sort((a, b) => weekOrder.indexOf(a.day) - weekOrder.indexOf(b.day));
  
  // 找到当前日在排序后数组中的位置
  const splitIndex = sortedByWeek.findIndex(item => item.day === currentDay);
  
  // 拆分并拼接:当前日及之后的部分 + 当前日之前的部分
  return [...sortedByWeek.slice(splitIndex), ...sortedByWeek.slice(0, splitIndex)];
};

// 执行排序
const sortedSales = sortFromCurrentDay(salesArray, currentDay);

// 输出结果示例(当前日为Thursday时)
console.log(sortedSales);
// 输出:
// [
//   { day: 'Thursday', sales: 0 },
//   { day: 'Friday', sales: 0 },
//   { day: 'Saturday', sales: 0 },
//   { day: 'Sunday', sales: 0 },
//   { day: 'Monday', sales: 0 },
//   { day: 'Tuesday', sales: 0 },
//   { day: 'Wednesday', sales: 0 }
// ]

关键细节

  • 日期格式匹配:确保currentDay的格式和Map中的键完全一致(比如都是首字母大写的英文全称),避免索引查找失败。
  • 容错处理:如果currentDay不在weekOrder中,函数会返回原数组,可根据需求添加错误提示。
  • 性能优化:如果数据量较大,可预先创建星期到索引的映射对象(比如const dayToIndex = new Map(weekOrder.map((day, idx) => [day, idx]))),替代多次调用indexOf提升效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:55:15