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

121
Vistas
bucle for reemplazando todos los elementos anteriores en la matriz

Estoy tratando de crear una serie de fechas basadas en una serie de semanas.

Hay cuatro semanas con 5 días cada una, cada semana es un objeto que contiene el número de semana y una matriz de 5 días; los días son objetos que contienen el día y la fecha.

weeks[0].days[0].day devolvería el lunes, por ejemplo.

Uso LuxonJS para generar la fecha según el número de semana y el día de la semana usando la función generateDate(weekNr, dayNr) .

Para completar el valor de la date en los elementos del día de la semana, he intentado lo siguiente:

 for(x = 0; x <= weeks.length; x++){ for(y = 0; y <= weeks[x].days.length; y++){ weeks[x].days[y]['date'] = generateDate(weeks[x].weekNr, y) } }

Sin embargo, por alguna razón, los días de cada semana ahora se llenan con las fechas de la última semana, por lo que weeks[0].days[4].date devolvería exactamente la misma fecha que weeks[3].days[4].date . En otras palabras, aparte del número de semana, las 4 semanas se vuelven idénticas.

Si registro las fechas en el bucle for, todas aparecen correctamente, por lo que parece que se reemplazan cada vez que se repite el primer bucle for. ¿Alguien sabe lo que estoy haciendo mal?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Este comportamiento probablemente esté relacionado con la forma en que construyó la matriz de weeks original. Parece que asignó el mismo objeto a las cuatro entradas en weeks , en lugar de crear un nuevo objeto para cada entrada.

Luego, cuando ejecute ese ciclo anidado, estará mutando el mismo objeto para cada iteración del ciclo externo. Así que asegúrese de crear un nuevo objeto cada vez que asigne (o envíe) un objeto a la matriz de weeks .


Como nota al margen, así es como lo haría en JavaScript vainilla:

 function getWeekDays(year, weekNr) { let dt = new Date(year, 0, 4); // 4 January is always in week #1 // Get Sunday before the start of the week dt.setDate(dt.getDate() - (dt.getDay() || 7) - 7 + weekNr * 7); return { weekNr, days: Array.from({length: 5}, () => { dt.setDate(dt.getDate() + 1); // Increment date return { day: dt.toLocaleDateString("en", { weekday: 'long'}), date: dt.toLocaleDateString("en-SE") }; }) }; } function getMonthDays(year, firstWeek, numWeeks) { return Array.from({length: numWeeks}, () => getWeekDays(year, firstWeek++)); } // Example creation of the weeks array let weeks = getMonthDays(2022, 9, 4); console.log(weeks);

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