Con el siguiente código, quiero insertar una matriz dentro de la matriz de weeks si i <= al valor de cada elemento en esa matriz.
const weeks = []; const daysInWeek = []; numberOfDays = 35; for (let i = 1; i <= numberOfDays; i ++) { if (i % 7 === 0){ weeks.push(i) } // output [7, 14, 21, 28, 35] for (logic here...) { daysInWeek.push([?]) } } Me gustaría que daysInWeek se viera así:
[[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15,......], ...]Es la primera vez que trabajo con bucles anidados y realmente no puedo entender la idea y, por lo tanto, no estoy seguro de cómo usar el segundo bucle.
Cualquier ayuda sería muy apreciada.
Cree una nueva matriz dentro de la instrucción if (i % 7 === 0){ . Esa matriz se creará para cada semana y contendrá sus días.
Ahora comience el segundo bucle restando 6 del valor actual de i . siempre seré una multitud de 7. Así i al restar 6 obtienes el primer día de esa semana. Almacene ese resultado en j .
Luego, para la parte de evaluación del bucle, verifique si j es igual o menor que i , nunca queremos ir más alto que el último día de la semana actual. También verifique si j es igual o menor que numberOfDays . No desea agregar más días de los que indicó.
Agregue cada día a la matriz de días. Luego, después del ciclo, agregue la matriz de días a daysInWeek . Ahora tienes esta estructura de matriz anidada.
const weeks = []; const daysInWeek = []; numberOfDays = 35; for (let i = 1; i <= numberOfDays; i ++) { if (i % 7 === 0){ weeks.push(i) const days = []; for (let j = i - 6; j <= i && j <= numberOfDays; j++) { days.push(j); } daysInWeek.push(days); } } console.log(daysInWeek);Tu bucle está mal. Por favor, intente esto también.
Dentro de un solo bucle, podemos crear todos los arreglos y agregarlos juntos de esta manera.
const weeks = []; const daysInWeek = []; numberOfDays = 35; for (let i = 1; i <= numberOfDays; i ++) { const weekid = parseInt(((i-1)/7)); // used i-1 because in the loop i started as 1. if we use i/7 we loose a day record from the first week. Test it. if(!weeks.includes(weekid) ){ weeks.push(weekid); } let tempArray = []; if(daysInWeek[weekid] === undefined){ daysInWeek[weekid] = []; } daysInWeek[weekid].push(i); } console.log(daysInWeek);Math.floor ((i - 1) / 7) te da la clave de la tabla para empujar tus días
<script type="text/javascript"> const weeks = []; const daysInWeek = [[]]; numberOfDays = 35; for (let i = 1; i <= numberOfDays; i ++) { if (i % 7 === 0){ weeks.push(i) daysInWeek.push([]) } daysInWeek[Math.floor((i - 1) / 7)].push(i) } console.log(daysInWeek); </script>