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

如何简化JavaScript中获取14个日期的代码?

优化Moment.js获取14个日期的方法

你可以用循环或者数组生成器批量创建这14个日期,不用逐个声明变量,下面是两种实用的实现方式:

方式一:生成日期数组

如果只需要按顺序存储日期对象,用数组是最简单的方案,一行代码就能搞定:

// 生成包含14个日期的数组,顺序为「今天 → 13天前」(共14天)
const last14Days = Array.from({ length: 14 }, (_, index) => moment().subtract(index, 'd'));

如果需要反过来按「13天前 → 今天」排列,直接反转数组即可:

last14Days.reverse();

要是你不需要包含今天,想取「昨天 → 14天前」的14个日期,只需调整subtract的参数:

const last14DaysWithoutToday = Array.from({ length: 14 }, (_, index) => moment().subtract(index + 1, 'd'));

方式二:生成带描述性键名的对象

如果还是想要类似原代码里today、yesterday这种可读的键名,可以用循环生成一个对象,自动给每个日期命名:

const dateCollection = {};

for (let i = 0; i < 14; i++) {
  let key;
  switch(i) {
    case 0:
      key = 'today';
      break;
    case 1:
      key = 'yesterday';
      break;
    default:
      // 超过1天的情况,按「N_days_ago」命名,比如3_days_ago
      key = `${i}_days_ago`;
  }
  dateCollection[key] = moment().subtract(i, 'd');
}

之后你就可以通过dateCollection.today、dateCollection.yesterday、dateCollection.5_days_ago访问对应的日期对象。

如果需要区分周和天(比如1_week_ago),可以扩展命名逻辑:

const dateCollection = {};

for (let i = 0; i < 14; i++) {
  let key;
  if (i === 0) {
    key = 'today';
  } else if (i === 1) {
    key = 'yesterday';
  } else if (i < 7) {
    key = `${i}_days_ago`;
  } else {
    const weeks = Math.floor(i / 7);
    const remainingDays = i % 7;
    key = remainingDays === 0 ? `${weeks}_weeks_ago` : `${weeks}_weeks_${remainingDays}_days_ago`;
  }
  dateCollection[key] = moment().subtract(i, 'd');
}

这样i=7时键名是1_weeks_ago,i=9时是1_weeks_2_days_ago,更贴合日常表述。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:10:15