如何使用嵌套循环将数组内推入数组



使用下面的代码,我想在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的当前值减去6i将永远是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>

最新更新