Estoy trabajando en un código que incrementa la fecha de un objeto en una declaración while y coloca una matriz en cada iteración, no puedo entender por qué, pero cuando imprimo la matriz en la consola, la fecha incrementada siempre está en el último día incrementado, el código está aquí:
while (Difference_In_Days > 1) { var assTemp = new assenza() Difference_In_Days = date2.getDate() - date1.getDate(); assTemp.data_ass = date1 assTemp.id_ass = 0 assTemp.motivo = "" + motivo assTemp.dipendente = this.dipendente this.assArr.push(assTemp) var assTemp = new assenza() date1.setDate(date1.getDate() + 1) }y el resultado de console.log(JSON.stringify(this.assArr)):
[ { "id_ass":0, "data_ass":"2021-10-15T00:00:00.000Z", "motivo":"saludo", "dipendente":{} },
{ "id_ass":0, "data_ass":"2021-10-15T00:00:00.000Z", "motivo":"saludo", "dipendente":{} },
{ "id_ass":0, "data_ass":"2021-10-15T00:00:00.000Z", "motivo":"saludo", "dipendente":{} } ]
como puede ver, data_ass (las fechas) son siempre las mismas, ¿por qué? si coloco un archivo console.log de date1 mientras me muestra un incremento correcto día a día a través de las iteraciones. Gracias por tu ayuda
Simplemente necesita copiar date1 a assTemp.data_ass, en lugar de asignar la referencia, cambiando la línea
assTemp.data_ass = date1a
assTemp.data_ass = new Date(date1);De lo contrario, cada instancia de assTemp tendrá el mismo valor para data_ass, es decir, el último valor.