使用下面的代码,我想在weeks
数组内推入一个数组,如果i
是<=
到该数组中每个元素的值。
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([?])
}
}
我希望daysInWeek
看起来像这样:
[[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15,......], ...]
这是我第一次使用嵌套循环,我不能真正掌握其中的思想,因此我不确定如何使用第二个循环。
任何帮助都将是非常感激的。
在if (i % 7 === 0){
语句中创建一个新的数组。该数组将为每个星期创建,并将保存您的日期。
现在开始第二个循环,从i
的当前值减去6
。i
将永远是7的倍数。所以减去6就得到这一周的第一天。将结果存储在j
中。
然后对于循环的求值部分,检查j
是否等于或低于i
,我们永远不想高于当前周的最后一天。还要检查j
是否等于或低于numberOfDays
。您不希望添加的天数超过指定的天数。
将每一天添加到days数组中。然后在循环之后将days数组添加到daysInWeek
。现在你得到了这个嵌套的数组结构。
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);
你的循环是错误的。请也试试这个
在一个循环中,我们可以创建所有数组并像这样将它们加在一起。
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);
数学。Floor ((i - 1)/7)给你表的键来推你的天
<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>