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

171
Vistas
Función recursiva para verificar la longitud de una matriz y si tiene menos de 10 de longitud, agregue de otra matriz a la primera matriz hasta que llegue a 10 de longitud

Entonces, lo que básicamente estoy tratando de hacer es consultar una lista de programas disponibles para un período de una semana. Lo formateo en un objeto para cuando selecciono un solo día, puedo usar fácilmente la búsqueda de objetos para ese día y crear programsOnSelectedDay en el día seleccionado.

 programDateLookUp { "22/04/24": [ { "programType": "CLINIC", "start_date": "2022-04-24T16:00:00.000Z" } ], "22/04/25": [ { "programType": "PRACTICE", "start_date": "2022-04-25T16:00:00.000Z" }, { "programType": "PICKUP", "start_date": "2022-04-25T16:00:00.000Z" } ], "22/04/27": [ { "programType": "PRACTICE", "start_date": "2022-04-27T16:00:00.000Z" } ], "22/04/28": [ { "programType": "CLINIC", "start_date": "2022-04-28T16:00:00.000Z" } ] }

Luego tomo los programsOnSelectedDay en el día seleccionado en función de las claves de objeto de esta manera

 const programsOnSelectedDay = programDateLookUp[selectedDay] || []; where selectedDay = '22/04/25'
 LOG programsOnSelectedDay [ { "programType": "PRACTICE", "start_date": "2022-04-25T16:00:00.000Z" }, { "programType": "PICKUP", "start_date": "2022-04-25T16:00:00.000Z" } ]

Ahora necesito una función recursiva, creo que para poder verificar la duración de los programsOnSelectedDay el día seleccionado, ver que sea menos de 10 y agregar los programas del día siguiente a esa matriz de programsOnSelectedDay en el día seleccionado, y así sucesivamente hasta que alcance al menos 10 resultados o tengo recorrido por los días restantes de la semana.

Tal como está, tengo algo como esto que simplemente alcanzará la profundidad máxima excedida

 const addProgramsBasedOnLength = (programs) => { if (programs.length === 0) return programs; if (programs.length < 10) { const nextDay = moment(selectedDate, FORMAT).add(1, 'days').format(FORMAT); const nextDayPrograms = programDateLookUp[nextDay] || []; return addProgramsBasedOnLength([...programs, ...nextDayPrograms]); } return programs; };

Si solo devuelvo [...programs,...nextDayPrograms] en lugar de la función que llama a esa nueva matriz, funciona para darme solo los resultados del día siguiente. Entonces, me pregunto cómo hacer que esto sea recursivo para que me proporcione hasta 10 resultados agregados a los programsOnSelectedDay originales en el día seleccionado O hasta que haya pasado el resto de la semana.

Cualquier sabe de una manera de lograr esto?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Intenté algo muy similar al comentario de @Ouroborus.
En su lugar, recorrer la matriz de semanas que tenía fechas formateadas para la semana seleccionada actual; usando el índice de cualquier fecha que ya haya seleccionado.
La solución a continuación permite agregar solo los días de la semana posteriores a la fecha seleccionada y no recorrer los días anteriores a mi fecha seleccionada.

 const addProgramsBasedOnLength = (programs, programDateLookUp, selectedDate, week) => { if (programs.length >= 10) return programs; const indexOfSelectedDate = week.findIndex(day => day.formatted === selectedDate); const restOfWeekPrograms = week.slice(indexOfSelectedDate + 1).reduce((acc, { formatted }) => [ ...acc, ...programDateLookUp[formatted] || [], ], []); return [...programs, { key: 'noMoreResultsForDay' }, ...restOfWeekPrograms]; };

Agregué el objeto clave allí para propósitos de UI cuando mapeo a través de la matriz devuelta.

about 4 years ago · Santiago Trujillo 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