Traemos la mejor respuesta que encontramos por todo internet. Esperamos que te sirva de ayuda y si quieres comentarnos alguna mejora hazlo con total libertad.
Solución:
Puede usar moment().week() para obtener el número de semana del año y luego agruparlo, aquí hay un ejemplo de trabajo, usé array.reduce para crear un nuevo objeto de fechas agrupadas por el número de semana:
const dates = [
"1396-10-11 09:07:21",
"1396-10-10 10:03:51",
"1396-10-07 02:07:02",
"1396-11-27 08:02:45",
"1396-11-19 01:02:32",
"1396-12-01 22:13:21",
"1396-02-12 09:07:21",
"1396-05-18 04:02:29",
"1396-05-21 14:01:42",
"1396-07-11 01:16:29"
];
const groups = dates.reduce((acc, date) =>
// create a composed key: 'year-week'
const yearWeek = `$moment(date).year()-$moment(date).week()`;
// add this key as a property to the result object
if (!acc[yearWeek])
acc[yearWeek] = [];
// push the current date that belongs to the year-week calculated befor
acc[yearWeek].push(date);
return acc;
, );
console.log(groups);
Otra forma sencilla de lograr lo mismo con Lodash sería la siguiente:
const groupBy = require('lodash/groupBy');
const moment = require('moment');
const data = [
"1396-10-11 09:07:21",
"1396-10-10 10:03:51",
"1396-10-07 02:07:02",
"1396-11-27 08:02:45",
"1396-11-19 01:02:32",
"1396-12-01 22:13:21",
"1396-02-12 09:07:21",
"1396-05-18 04:02:29",
"1396-05-21 14:01:42",
"1396-07-11 01:16:29"
];
groupBy(data, (dt) => moment(dt).week());
El resultado es el siguiente:
'7': [ '1396-02-12 09:07:21' ],
'21': [ '1396-05-18 04:02:29', '1396-05-21 14:01:42' ],
'29': [ '1396-07-11 01:16:29' ],
'41': [ '1396-10-07 02:07:02' ],
'42': [ '1396-10-11 09:07:21', '1396-10-10 10:03:51' ],
'47': [ '1396-11-19 01:02:32' ],
'49': [ '1396-11-27 08:02:45', '1396-12-01 22:13:21' ]
Finalizando este artículo puedes encontrar las acotaciones de otros gestores de proyectos, tú asimismo tienes la habilidad insertar el tuyo si lo deseas.
¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)