js对日期数组的处理,reduce的使用

老早之前的问题的,同事遇到的,记录一下

可以使用 reduce 方法对 initDate 进行操作,将每个日期按年份和月份分组并存储在 hist 对象中。以下是实现这个逻辑的代码:

const initDate = [
  "2020-01-01",
  "2020-01-02",
  "2020-02-01",
  "2021-01-01",
  "2021-02-01",
  "2021-02-02",
];

const hist = initDate.reduce((acc, date) => {
  const [year, month] = date.split("-"); // 将日期字符串按照 "-" 分割成年份和月份
  const key = `${year}-${month}`; // 创建键,由年份和月份组成
  
  if (acc[key]) {
    acc[key].push(date); // 如果键已存在,则将当前日期添加到对应的数组中
  } else {
    acc[key] = [date]; // 如果键不存在,则创建一个新的键,并将当前日期作为唯一元素
  }
  
  return acc;
}, {});

for (const key in hist) {
  console.log(key);
  console.log(hist[key]);
}

在上面的代码中,我们首先使用 reduce 方法来对 initDate 进行操作。在每次迭代时,我们将每个日期字符串按照 "-" 分割成年份和月份,并创建一个键,由年份和月份组成。然后,我们检查该键是否已存在于 hist 对象中。如果存在,我们将当前日期添加到对应的数组中。如果不存在,我们创建一个新的键,并将当前日期作为唯一元素。最后,我们使用循环遍历 hist 对象,并打印出每个键以及对应的日期数组。

运行上述代码将输出如下结果:

2020-01
[ '2020-01-01', '2020-01-02' ]
2020-02
[ '2020-02-01' ]
2021-01
[ '2021-01-01' ]
2021-02
[ '2021-02-01', '2021-02-02' ]

这样,我们就成功地将 initDate 中的日期按照年份和月份分组,并存储在 hist 对象中,并且打印出了每个键以及对应的日期数组。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值