Tengo la siguiente función auxiliar que creé, que sirve para crear una matriz de un rango de fechas. Supongamos que la variable de holidays es una matriz de cadenas de fecha ISO y ya está completa en otra parte de mi aplicación vue.
export const parseAvailableDates = ( startDate, endDate, holidays ) => { console.log({ startDate, endDate, holidays }); let dates = []; for ( let i = new Date(startDate); i <= new Date(endDate); i.setDate(i.getDate() + 1) ) { console.log("running"); const thisDate = i.toLocaleString("en-US", localeString); if (!thisDate.includes("Sunday") && !thisDate.includes("Saturday")) { const formattedDate = changeLocaleDateToISOString(thisDate); if (!holidays.includes(formattedDate)) { dates.push(formattedDate); } } } console.log(dates); return dates; }; Ahora, necesito llamar a esta función dos veces en mi aplicación Vue en la misma función, una para completar inicialmente las fechas según el rango entre startAssignments y lastDateToSubmitWork , y nuevamente para restablecer la matriz de fechas availableDates al rango entre startAssignments y endDate .
// called here const startAssignments = `2022-02-09T00:00:00.000+04:00` const lastDateToSubmitWork = `2022-08-19T00:00:00.000+04:00` const endDate = `2022-08-31T00:00:00.000+04:00` let availableDates = []; availableDates = parseAvailableDates( startAssignments, lastDateToSubmitWork, holidays ); console.log(availableDates); // also called here availableDates = parseAvailableDates( startAssignments, endDate, holidays ); Cuando ocurren estas dos llamadas, el archivo console.log( console.log() inicial en parseAvailableDates() muestra la fecha de inicio, la fecha de finalización y las vacaciones definidas correctamente en ambas llamadas. Sin embargo, en la primera llamada, el bucle for nunca se ejecuta y la función devuelve [] , y en la segunda llamada, el bucle for se ejecuta y la función devuelve una matriz de cadenas de fecha ISO completa correctamente.
No entiendo por qué el primer bucle no funciona correctamente, pero el segundo sí.