moment.js y loadash.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' ]Las primeras 3 fechas son iguales con 1 minuto de diferencia, las segundas dos fechas son iguales con 1 minuto de diferencia.
Quería agrupar las fechas que tienen solo 5 minutos de diferencia, como se muestra a continuación.
[ [ 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' ] ]Pude lograr el resultado con múltiples iteraciones de matriz, pero ¿hay alguna manera bonita?
Aquí hay una sugerencia con una sola iteración de matriz si eso es bastante para usted:
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>