Javascript 基本逻辑 - 打印从 1 到 n 的每个三和四循环



我想看到这样的输出

 [0, 1, 2]
 [3, 4, 5, 6]
 [7, 8, 9]
 [10, 11, 12, 13]
 [14, 15, 16]

识别每三个(一个周期)和四个(B周期)做某事。我只想出了一些我认为如下的糟糕方法:

var arr = [];
function a(n) {
  var eachCycle = 7;
  var aCycle = 3;
  var bCycle = 0;
  arr.push(0);
  for (var i = 1; i < n; i += 1) {
    if (i % eachCycle === aCycle || i % eachCycle === bCycle) {
      if(i % eachCycle === aCycle) {
        // print three column 
      } else if(i % eachCycle === bCycle) {
        // print four column
      }
      console.log(arr);
      arr.length = 0;
    }
    arr.push(i)
  }
}

有什么好主意可以改进输出的此功能吗!?谢谢

这个怎么样:

function a(n)
{
    // keep track of all the cycles
    var total = [];
    // hold values for the current cycle
    var temp = [];
    // cycle sizes
    var cycleSizes = [3, 4];
    // index of the current cycle
    var currentCycleIndex = 0;
    // iterate through numbers
    for(var i = 0; i < n; ++i)
    {
        // push the value into the temp
        temp.push(i);
        // if the length of the temp array is the length we want for the current cycle then
        if(temp.length == cycleSizes[currentCycleIndex])
        {
            // save the cycle data
            total.push(temp);
            // reset the cycle
            temp = [];
            // change the cycle
            currentCycleIndex = currentCycleIndex ^ 1;
        }
    }
    return total;
}
a(9);
[
    [0, 1, 2],
    [3, 4, 5, 6],
    [7, 8]
];
a(17);
[
    [0, 1, 2],
    [3, 4, 5, 6],
    [7, 8, 9],
    [10, 11, 12, 13],
    [14, 15, 16],
];

最新更新