Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

248
Vistas
¿Cómo puedo crear una función que tome una fecha y devuelva horarios según la condición de tiempo?

Esta es la estructura de mi base de datos:

 [ { "schedule_time": "2021-05-17 12:39:29", "slot": "L", "item_date": "2021-05-18" }, { "schedule_time": "2021-05-17 12:47:53", "slot": "D", "item_date": "2021-05-18" }, { "schedule_time": "2021-05-18 13:55:22", "slot": "D", "item_date": "2021-05-19" }, { "schedule_time": "2021-05-19 16:09:15", "slot": "L", "item_date": "2021-05-20" }, { "schedule_time": "2021-05-19 16:11:55", "slot": "L", "item_date": "2021-05-20" },

Quiero crear una función que tomará item_date y mostrará cuántos horarios hay entre las 9 am y las 12 am. 12h a 15h, 15h a 18h, 18h a 21h los días anteriores. si observa la base de datos, item_date y schedule_date no son lo mismo. Es por eso que quiero que los horarios del día anterior se enumeren en una matriz.

Creé una función que solo devuelve datos de 9 am a 12 am. Quiero los horarios juntos en una matriz.

 function schedulesList (date){ let dbItemDate = date; let otherDayArray = schedules.filter(num => num.item_date !== dbItemDate); // not equal because I want other dates schedules not the exact date let times = otherDayArray?.filter(num => num.schedule_time.split(' ')[1] >= '12:00:00' && num.schedule_time.split(' ')[1] <= '14:00:00'); console.log('9am to 12pm', times.length, 'schedules') // }

El resultado esperado debe ser similar a este:

 [ '9am to 12pm' : 2, '12pm to 3pm' : 0, '3pm to 6pm' : 1, '6pm to 9pm' : 3, ]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Suponiendo que haya almacenado la matriz de entrada dada en una variable llamada data .

 let data = [{ "schedule_time": "2021-05-17 12:39:29", "slot": "L", "item_date": "2021-05-18" }, { "schedule_time": "2021-05-17 12:47:53", "slot": "D", "item_date": "2021-05-18" }, { "schedule_time": "2021-05-18 13:55:22", "slot": "D", "item_date": "2021-05-19" }, { "schedule_time": "2021-05-19 16:09:15", "slot": "L", "item_date": "2021-05-21" }, { "schedule_time": "2021-05-19 16:11:55", "slot": "L", "item_date": "2021-05-20" } ]; //function to get the final results let getScheduleCounter = (date) => { let scheduleCounter = { '9_12': [], '12_3': [], '3_6': [], '6_9': [] }; data.forEach(sch => { if (sch.item_date !== date) { updateScheduledCounter(sch, scheduleCounter); } }); return scheduleCounter; } //function to get the count and update in scheduleCounter let updateScheduledCounter = (sch, scheduleCounter) => { let time = sch.schedule_time.split(' ')[1]; switch (!!time) { case (time <= '12:00:00'): scheduleCounter['9_12']++; break; case (time >= '12:00:00' && time <= '15:00:00'): scheduleCounter['12_3']++; break; case (time >= '15:00:00' && time <= '18:00:00'): scheduleCounter['3_6']++; break; case (time >= '18:00:00' && time <= '21:00:00'): scheduleCounter['6_9']++; break; } } let schedules = getScheduleCounter("2021-05-20"); console.log('schedules: ', schedules);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Sugiero el siguiente enfoque para la solución.

 const schedules = [ {"schedule_time": "2021-05-17 12:39:29","slot": "L","item_date": "2021-05-18"}, {"schedule_time": "2021-05-17 12:47:53","slot": "D","item_date": "2021-05-18"}, {"schedule_time": "2021-05-18 13:55:22","slot": "D","item_date": "2021-05-19"}, {"schedule_time": "2021-05-19 16:09:15","slot": "L","item_date": "2021-05-20"}, {"schedule_time": "2021-05-19 16:11:55","slot": "L","item_date": "2021-05-20"}]; const hours = [ {hoursName: '9am to 12pm', from: 9, to: 12}, {hoursName: '12pm to 3pm', from: 12, to: 15}, {hoursName: '3pm to 6pm', from: 15, to: 18}, {hoursName: '6pm to 9pm', from: 18, to: 21}]; const targetDate = new Date("2021-05-20"); const previousItems = schedules.filter(({ schedule_time }) => { const scheduleTime = new Date(schedule_time); return scheduleTime < targetDate; }); const result = previousItems.reduce((acc, { schedule_time }) => { const scheduleTime = new Date(schedule_time); const targetHour = scheduleTime.getHours(); const { hoursName } = hours.find(({ from, to }) => (targetHour >= from) && (targetHour < to)); acc[hoursName] = (acc[hoursName] ?? 0) + 1; return acc; }, {}); console.log(result);
 .as-console-wrapper{min-height: 100%!important; top: 0}

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda