javascript - for循环每5次迭代递增变量?

标签 javascript jquery loops for-loop

我不是 100% 确定如何表达这个问题,所以请随意将问题标题更改为有意义的内容。

我有一个对象 solution,它包含一个属性名称 days,它包含 10 个数组,请参见下面的示例

{
    "sameShiftHolds": true,
    "sameStaffHolds": true,
    "sameRoomHolds": true,
    "days": [{
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": false
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": false
    }, {
        "availableStaff": [
            [0, 1, 4, 3, 5, 9, 22, 44],
            [0, 1, 4, 3, 5, 9, 22, 44],
            [4, 8, 7]
        ],
        "availableRooms": [
            [3, 6, 77, 89, 23],
            [3, 6, 77, 89, 23],
            [2, 7, 9]
        ],
        "suitableStaff": [
            [22, 44],
            [22, 44],
            [4]
        ],
        "suitableRooms": [
            [89, 23],
            [22, 44],
            [2]
        ],
        "ValidStartDate": true
    }]
}

在我的网站上,我有一个定制的一周日历 View ,它是从一个模板创建的,从周一到周五。默认情况下,有 2 周,但用户可以更改他们希望看到的周数。每周由具有唯一 ID “solCol0”“solCol1” 等的 div 分割....

enter image description here

然后我遍历选定的周数,在本例中我们有 2。 然后遍历 solution 的长度,在本例中为 10。 我只想循环 5 次(一周中的每一天),然后在 5 次循环后,将 columdId 增加 1 以将详细信息附加到下一周,例如前 5 次循环附加到 "solCol0" 然后接下来的 5 个附加到“solCol1”,如果用户选择了超过 2 周,到 3,solution 长度将增加到 15,因此接下来的 5 个循环将附加到“'solCol2”` 等...

抱歉,如果这不是很清楚,通常我只需要在每 5 个循环后递增一个值。任何帮助将不胜感激。

loadSolutionStartRows: function(dates, solution) {
    var self = this;
    for (var i = 0; i < dates.length; i++) {
        var columnId = "#solCol" + i;
        var startDate = moment(dates[i], 'Do MMM');
        var rowDates = [];
        var iterate = 5;
        for (var d = 0; d < solution.days.length; d++) {
            //Every 5 loops - columnId = "#solCol" + i + 1;
            rowDates.push(moment(startDate).format('ddd (Do MMM)'));
            startDate.add(1, 'days');
            var selectedDate = rowDates[d];

            var statusClass;
            var statusIconClass;
            if (solution.days[d].ValidStartDate === true) {
                statusClass = "sxpTableHeaderIconGreenStatus";
                statusIconClass = "octicon " + "octicon-check";
            }
            if (solution.days[d].ValidStartDate === false) {
                statusClass = "sxpTableHeaderIconRedStatus";
                statusIconClass = "octicon " + "octicon-x";
            }


            $(columnId).append(self.solutionTableRow({
                rowId: i + 1,
                date: selectedDate,
                statusClass: statusClass,
                statusIconClass: statusIconClass,
                trainerCountEarly: 1,
                trainerListEarly: 1,
                roomCountEarly: 1,
                roomListEarly: 1,
                trainerCountLate: 1,
                trainerListLate: 1,
                roomCountLate: 1,
                roomListLate: 1
            }));
        }
    }
}

},

使用上面的代码我实现了下图,它增加了 10 天而不是我想要的 5 天。

enter image description here

最佳答案

您将希望有一个每 5 次迭代递增的变量,因此您需要检查索引是否为 5 的倍数:

var foo = 0;

for (var i; i < someLength; ++i) {
  if (i % 5 === 0) {
    foo++;
  }
}

这使用取模运算符来获取 i/5 的余数。如果它是 0,那么我们知道索引是 5 的倍数。

请注意,这是完全没有必要的,也可以这样做

Math.floor(someLength / 5);

或者更简洁:

someLength / 5 | 0;

两者都会将除法的结果 chop 为整数,你就会知道someLength包含多少个5。

关于javascript - for循环每5次迭代递增变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39793967/

相关文章:

javascript - 从 bootstrap-timepicker 获取值(value) 24

javascript - 如何将局部变量传递给全局函数

javascript - 如何清除 Angular 中组合框的选定值

javascript - 如果我们有视频链接,如何获取YouTube视频标题

javascript - 重置书签中的 CSS 属性

javascript - Position Fixed - 设置宽度等于容器

jquery - 动态调整类以使文本适合小框

objective-c - 循环直到在 Objective-C 中达到多个条件

php - 选择parent_id下的所有产品(表1)(表2 =类别)

javascript - 我怎样才能通过 if operator only 获得一个警报? (刚开始JavaScript学习)