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

JavaScript实现:从对象数组的每周起始日期生成全周日期

基于Moment.js的周数据扩展实现

需求分析

给定一个对象数组,每个对象的x是每周起始日期(格式YYYY-MM-DD),y是该周对应值,需要将每个周的7天全部展开为独立对象,每个日期对应的y值与原周保持一致。

实现思路

  1. 遍历原始数组中的每一项周数据
  2. 对每个周起始日期,使用Moment.js生成该周的7个连续日期
  3. 为每个日期创建新对象,复用原周的y值
  4. 将所有生成的对象合并为最终结果数组

完整代码实现

// 确保已引入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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:51:32