JavaScript实现:从对象数组的每周起始日期生成全周日期
基于Moment.js的周数据扩展实现
需求分析
给定一个对象数组,每个对象的x是每周起始日期(格式YYYY-MM-DD),y是该周对应值,需要将每个周的7天全部展开为独立对象,每个日期对应的y值与原周保持一致。
实现思路
- 遍历原始数组中的每一项周数据
- 对每个周起始日期,使用Moment.js生成该周的7个连续日期
- 为每个日期创建新对象,复用原周的
y值 - 将所有生成的对象合并为最终结果数组
完整代码实现
// 确保已引入Moment.js function expandWeeklyData(data) { const result = []; data.forEach(item => { const startDate = moment(item.x); // 遍历一周7天 for (let i = 0; i < 7; i++) { const currentDate = startDate.clone().add(i, 'days').format('YYYY-MM-DD'); result.push({ x: currentDate, y: item.y }); } }); return result; } // 测试用输入数据 const inputData = [ { "x": "2022-07-25", "y": 0.5 }, { "x": "2022-08-01", "y": 0.2 }, { "x": "2022-08-08", "y": 0.3 } ]; // 执行函数并输出结果 const outputData = expandWeeklyData(inputData); console.log(outputData);
关键细节说明
- 使用
moment(item.x)解析起始日期,确保日期格式正确识别 - 每次循环用
clone()复制Moment对象,避免修改原日期实例导致的连锁错误 add(i, 'days')生成第i天的日期,从0到6刚好覆盖一周7天format('YYYY-MM-DD')将日期转换为需求的字符串格式
执行上述代码后,输出结果将与你提供的预期示例完全一致。
内容的提问来源于stack exchange,提问作者Richo
相关产品推荐
相关产品推荐

