TypeScript实现工作日索引数组转三字母星期字符串的方法
最佳实现方案
核心逻辑非常直接:先固定0-6索引和星期缩写的对应关系,再遍历数据替换目标字段即可,全程不需要引入第三方依赖,结果稳定无兼容问题。
- 首先定义固定映射表:不要用内置Date相关API做转换,这类接口受运行环境的语言、时区设置影响,很容易返回不符合要求的结果(比如返回中文星期、全拼、带后缀的缩写),直接写死映射是最稳妥的方案
// 索引顺序严格对应0=Mon 到 6=Sun的规则 const WEEKDAY_ABBR = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
- 优先选无副作用的纯函数写法做转换:这种写法不会修改原始输入数据,避免影响其他依赖原始数据的逻辑,转换后所有非目标字段会原样保留
const processedResult = { data: rawData.data.map(userItem => ({ // 保留对象所有原有字段 ...userItem, // 单独替换days_present字段,按索引取对应的缩写即可 days_present: userItem.days_present.map(index => WEEKDAY_ABBR[index]) })) };
如果你的场景不需要保留原始的数字索引值,也可以直接遍历修改原数据,内存开销更小:
rawData.data.forEach(item => { item.days_present = item.days_present.map(idx => WEEKDAY_ABBR[idx]) })
用你给出的测试数据运行上述代码,输出的
days_present字段和期望结果完全匹配,其余字段不会做任何改动。
内容的提问来源于stack exchange,提问作者Sha
相关产品推荐
相关产品推荐

