首页 > 解决方案 > 给定日期数组,在“周”范围内的分组中显示结果

问题描述

我需要显示日期列表所在的“周”范围。例如,给定一个日期数组:

const dates = [
  '2019-11-15', 
  '2019-11-13', 
  '2019-11-12', 
  '2019-11-09', 
  '2019-11-05', 
  '2019-11-03', 
  '2019-10-31', 
  '2019-10-28'
];

我需要输出:

11/10-11/16 周:

11/3-11/9 周:

10/27-11/2 周:

我正在努力解决如何为每周(周日至周六)生成适当的范围。范围需要限制在数组中所有日期的范围内;即在给定日期列表所需的范围之前或之后没有空的“周”范围。

标签: javascript

解决方案


使用startOfendOf

var dates = ['2019-11-15', '2019-11-13', '2019-11-12', '2019-11-09', '2019-11-05', '2019-11-03', '2019-10-31', '2019-10-28']

const result = dates.reduce((a, i) => {
  let m = moment(i)
  let k = m.startOf('week').format('M/D') + '-' + m.endOf('week').format('M/D')
  a[k] = (a[k] || []).concat(i)
  return a
}, {})

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


推荐阅读