首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日期分组为最近的日期

问将日期分组为最近的日期
EN

Stack Overflow用户
提问于 2021-09-30 09:49:28
回答 1查看 21关注 0票数 1

moment.js和loadash.js

代码语言:javascript
复制
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' ] 

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

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

代码语言:javascript
复制
[ 
 [ 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' ]    
]

我可以通过多次数组迭代来达到这个结果,但是有没有什么好的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 10:06:51

如果这对你来说是一种很好的方式,这里有一个关于单数组迭代的建议:

​

代码语言:javascript
复制
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);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69390029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档