Tengo una serie de veces en la época como a continuación:
const times = [1653931370, 1653924170, 1653920570, 1653913370, 1653913370, 1653902570]
todas estas fechas son de un solo día entre las 00:00 y las 23:59. En este momento, necesito asignar cada uno de estos tiempos a una hora específica junto con la cantidad de ocurrencias de esa hora. Mi respuesta debería ser como la siguiente:
[ { hour: 0, //00:00 occurs: 4 }, { hour: 1, //01:00 occurs: 4 }, ... { hour: 22, //22:00 occurs: 17 }, { hour: 23, //23:00 occurs: 12 }, ]¿Podría alguien ayudarme con este asunto? ¡Gracias por cualquier ayuda!
Mapee sobre la matriz y obtenga las horas usando el método Date.prototype.getHours .
Luego agrupa las horas usando Array.prototype.reduce .
const times = [ 1653931370, 1653924170, 1653920570, 1653913370, 1653913370, 1653902570, ]; const res = Object.values( times .map((t) => new Date(t * 1000).getHours()) .reduce((r, t) => { r[t] ??= { hour: t, occurs: 1 }; r[t].occurs += 1; return r; }, {}) ); console.log(res);Otra documentación relevante:
Crear nuevo objeto. Bucle sobre todos los times , por ejemplo con for each. Use la clase Date como esta new Date(epoch * 1000).getHours() y almacene esa hora. Compruebe si la clave your_hour existe en el nuevo objeto. Si no es así, empújelo como myResult[your_hour] = {hour: your_hour, occurances: 1} . Si existe, agregue a ese objeto así myResult[your_hour].occurances = myResult[your_hour].occurances + 1; . Ese es generalmente el enfoque que uso, pero hay múltiples soluciones para esto.