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

如何将星期缩写转换为对应数字?寻求更优实现方案

星期缩写转数字串的更优实现方案

针对你需要将{id:1, weeks: 'Mon,Tue,Thu'}转换为{id:1, weeks:'124'}的需求,这里提供几种更简洁高效的实现方式:

方法一:对象映射+链式数组操作(推荐)

这种方式通过预定义星期与数字的映射表,配合数组的split、map、join方法完成转换,代码直观易读,维护成本低,查找映射的时间复杂度为O(1)。

const originalObj = {
  id: 1,
  weeks: 'Mon,Tue,Thu'
};

// 定义星期到对应数字的映射表
const weekToNumMap = {
  Mon: '1',
  Tue: '2',
  Wed: '3',
  Thu: '4',
  Fri: '5',
  Sat: '6',
  Sun: '7'
};

// 生成转换后的对象
const resultObj = {
  ...originalObj,
  weeks: originalObj.weeks.split(',').map(day => weekToNumMap[day]).join('')
};

console.log(resultObj);
// 输出:{ id: 1, weeks: '124' }

方法二:数组索引映射

如果星期的顺序是固定的,可以利用数组索引+1来获取对应数字,代码更精简,但查找索引的时间复杂度为O(n)(n为星期数量,这里仅7个,性能影响可忽略)。

const originalObj = {
  id: 1,
  weeks: 'Mon,Tue,Thu'
};

const weekOrder = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];

const resultObj = {
  ...originalObj,
  weeks: originalObj.weeks.split(',').map(day => weekOrder.indexOf(day) + 1).join('')
};

console.log(resultObj);
// 输出:{ id: 1, weeks: '124' }

方法三:Map结构映射

和对象映射逻辑类似,Map结构支持更多类型的键,适合后续可能扩展的场景,用法和对象映射几乎一致。

const originalObj = {
  id: 1,
  weeks: 'Mon,Tue,Thu'
};

const weekMap = new Map([
  ['Mon', '1'],
  ['Tue', '2'],
  ['Wed', '3'],
  ['Thu', '4'],
  ['Fri', '5'],
  ['Sat', '6'],
  ['Sun', '7']
]);

const resultObj = {
  ...originalObj,
  weeks: originalObj.weeks.split(',').map(day => weekMap.get(day)).join('')
};

总结

优先推荐方法一,它在可读性、维护性和性能上都表现出色,后续如果需要调整星期与数字的对应关系,只需修改映射表即可,无需改动转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:55:22