将日期分组到最近的

Grouping dates to nearest

moment.jsloadash.js

const startTime =  [ '2021-09-30T02:38:56', '2021-09-30T02:39:56', '2021-09-30T02:40:56', '2021-09-30T02:10:56', '2021-09-30T02:11:56' ] 

前三个日期相同但相差 1 分钟,后两个日期相同但相差 1 分钟。

我想将相差仅 5 分钟的日期分组,如下所示。

[ 
 [ 2021-09-30T02:38:56', '2021-09-30T02:39:56', '2021-09-30T02:40:56' ], 
 [ '2021-09-30T02:10:56', '2021-09-30T02:11:56' ]    
]

我可以通过多次数组迭代来获得结果,但是有什么好的方法吗?

这里有一个单数组迭代的建议,如果这对你来说很合适的话:

const startTime = ['2021-09-30T02:38:56', '2021-09-30T02:39:56', '2021-09-30T02:40:56', '2021-09-30T02:10:56', '2021-09-30T02:11:56'];
axisSTime = moment(startTime[1]);
const groupedSTimes = [];
let groupedSTime = [startTime[1]];
const MAX_DIFF_MIN = 5;
startTime.slice(1).forEach((sTime, i, slicedArray) => {
  const diffMin = Math.abs(moment(sTime).diff(axisSTime) / 60000);
  if (diffMin > MAX_DIFF_MIN) {
    groupedSTimes.push(groupedSTime);
    groupedSTime = [];
    axisSTime = moment(sTime);
  }
  groupedSTime.push(sTime);
  if(i == slicedArray.length - 1) {
    groupedSTimes.push(groupedSTime);
  }
});
console.log(groupedSTimes);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>