Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

177
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!