Estoy trabajando con una función que necesita devolver una matriz con datos, los datos de las Fechas siempre son los mismos pero la definición de las fechas no es la misma, aquí las fechas guardadas en una matriz, cada fecha es diferente pero cuando Intento poner estos datos en otra matriz, siempre devuelve la última fecha de la matriz:
const dates=[new Date(startTimestamp), new Date(startTimestamp+ 6.048e+8), new Date(startTimestamp+2*+ 6.048e+8), new Date(startTimestamp+3*+ 6.048e+8)] for (let index = 0; index < 4; index++) { const week = weeksData[weekIndex + index];//I have an array of weeks to search for some data //if that data is not in the array then i want to add a new week with a new Date if (week !== undefined ) { newWeeks.push(week); } else{ const mockWeek={} mockWeek.timestamp=dates[index].valueOf(); mockWeek.week= dayjs(dates[index]).format('MMM DD'); console.log(dates[index]) console.log(mockWeek) newWeeks.push(mockWeek) } }¿Qué estoy haciendo mal?
La matriz de semanas es así
Array(17) 0: Week id: "test-project_1652590800000" projectId: "test-project" data:{...} timestamp: 1652590800000 week: "May 15" 1: Week id: "test-project_1641196800000" projectId: "test-project" data:{...} timestamp: 1641196800000 week: "Jan 03" 2: Week id: "test-project_1641801600000" projectId: "test-project" data:{...} timestamp: 1641801600000 week: "Jan 10"Busco en esta matriz por alguna fecha, pero si la fecha no existe, es cuando quiero agregar la semana simulada, con los mismos datos, pero con una semana y una marca de tiempo diferentes, es cuando la semana simulada siempre tiene la última fecha. de la matriz, aquí no tengo el 8 de mayo y el 1 de mayo, por ejemplo, entonces quiero agregar una semana simulada como esta
3: Week id: "test-project_1651381200000" projectId: "test-project" data:{...} timestamp: 1651381200000 week: "May 1" 4: Week id: "test-project_1651986000000" projectId: "test-project" data:{...} timestamp: 1651986000000 week: "May 8"Pero en cambio, tengo en los datos de ambas semanas el "8 de mayo" y la marca de tiempo del "8 de mayo"
Esto no es una respuesta, es un comentario largo que busca una aclaración.
La creación de un fragmento ejecutable a partir del código publicado muestra que no se comporta como se describe. Agregué punto y coma y arreglé los errores de sintaxis. Parece hacer lo que quiere (es decir, agregar objetos de semana faltantes a la matriz newWeeks ).
Debe publicar un código (preferiblemente como un fragmento ejecutable) que demuestre el problema. Hasta entonces, las respuestas solo pueden ser conjeturas.
let startTimestamp = new Date().setHours(0,0,0,0); let dates=[new Date(startTimestamp), new Date(startTimestamp+ 6.048e+8), new Date(startTimestamp+2*+ 6.048e+8), new Date(startTimestamp+3*+ 6.048e+8)]; let weekIndex = 5; // Ensure no weeks are found let newWeeks = []; let weeksData = [{ // Minimal data in array from OP 0: 'Week', timestamp: 1652590800000, week: "May 15" },{ 1: 'Week', timestamp: 1641196800000, week: "Jan 03" },{ 2: 'Week', timestamp: 1641801600000, week: "Jan 10" }]; // Loop from OP for (let index = 0; index < 4; index++) { let week = weeksData[weekIndex + index]; if (week !== undefined ) { newWeeks.push(week); } else { let mockWeek = {}; mockWeek.timestamp = dates[index].valueOf(); mockWeek.week = dayjs(dates[index]).format('MMM DD'); console.log(dates[index]); console.log(mockWeek); newWeeks.push(mockWeek); } } console.log(newWeeks); <script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.2/dayjs.min.js"></script>