在JavaScript中从日期获取星期名称:数组/对象映射场景下的实现求助
嗨,我来帮你搞定这个问题!你的getDayName函数逻辑是对的,接下来我给你演示两种常见场景下怎么把它用在数据映射里——处理数组和处理对象/对象数组的情况。
在数组中直接映射转换
如果你有一个纯日期字符串的数组,直接用Array.map()方法就能批量转换:
// 先保留你的原函数 let getDayName = (dateStr, locale) => { let date = new Date(dateStr); return date.toLocaleDateString(locale, { weekday: 'long' }); }; // 示例日期数组 const dateList = ['2024-05-20', '2024-05-21', '2024-05-22']; // 映射生成星期名称数组 const dayNames = dateList.map(dateStr => getDayName(dateStr, 'zh-CN')); console.log(dayNames); // 输出: ["星期一", "星期二", "星期三"]
在对象/对象数组中添加星期属性
如果你的数据是带日期属性的对象(或者对象数组),可以在映射的时候给每个对象新增一个星期名称的属性:
// 示例对象数组(比如从接口拿到的事件数据) const events = [ { id: 1, eventDate: '2024-05-20', title: '项目评审会' }, { id: 2, eventDate: '2024-05-21', title: '团队培训' }, { id: 3, eventDate: '2024-05-22', title: '客户拜访' } ]; // 映射转换,给每个事件添加星期名称 const eventsWithDay = events.map(event => { // 用扩展运算符保留原对象属性,新增dayName字段 return { ...event, dayName: getDayName(event.eventDate, 'zh-CN') }; }); console.log(eventsWithDay); // 输出结果会是每个对象都多了dayName属性: // [ // { id: 1, eventDate: '2024-05-20', title: '项目评审会', dayName: '星期一' }, // ...其余对象同理 // ]
如果是单个对象的话,直接给它新增属性就行:
const singleEvent = { id: 1, eventDate: '2024-05-20', title: '一对一沟通' }; singleEvent.dayName = getDayName(singleEvent.eventDate, 'zh-CN');
小提醒:要确保传入的dateStr是Date构造函数能正确解析的格式(比如YYYY-MM-DD),如果遇到不规范的日期字符串,可能需要先做格式转换哦!
内容的提问来源于stack exchange,提问作者tonsofcode
相关产品推荐
相关产品推荐

