Aquí está mi código, pero esta matriz devuelve solo los mismos elementos. Estoy tratando de crear una matriz que contenga 10 elementos para los próximos lunes. Alguien sabe, por favor, ayúdenme.
mi código:
function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) { const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"] .indexOf(dayName.slice(0,3).toLowerCase()); if (dayOfWeek < 0) return; refDate.setHours(0,0,0,0); refDate.setDate(refDate.getDate() + +!!excludeToday + (dayOfWeek + 7 - refDate.getDay() - +!!excludeToday) % 7); return refDate; } let arr=[] for(let i=0;i<10;i++){ arr.push(arr[i]=getNextDayOfTheWeek("Monday",false)) } console.log(arr)getNextDayOfWeek recibe las mismas entradas y, por lo tanto, tendrá las mismas salidas.
Necesitas:
new Date en la matriz de resultados, porque las fechas son objetos y, por lo tanto, se pasan por referencia. Si no hace esto, cada llamada de getNextDayOfTheWeek realizará cambios en el mismo objeto almacenado en cada posición de la matriz de resultados.Z al final de la hora que indica UTC). let arr=[] let refDate = new Date() for(let i=0;i<10;i++){ refDate = getNextDayOfTheWeek("Monday",false, refDate) arr.push(refDate) } function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) { const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"] .indexOf(dayName.slice(0,3).toLowerCase()); if (dayOfWeek < 0) return; refDate.setHours(0,0,0,0); refDate.setDate(refDate.getDate() + +!!excludeToday + (dayOfWeek + 7 - refDate.getDay() - +!!excludeToday) % 7); return refDate; } let arr=[] let refDate = new Date() for(let i=0;i<10;i++){ refDate = getNextDayOfTheWeek("Monday", i > 0 ? true : false, refDate) arr.push(new Date(refDate)) } console.log(arr)