JavaScript forEach() 调试:代码审查?

JavaScript forEach() debug: code review?

我的输出需要是:

01 02 03 04 05 06 07 08 
09 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32

我有点缺乏练习,开始时遇到了困难。到目前为止,我将引导您完成我的思考过程,但如果您能在正确的方向上推动我,那就太棒了!

首先,我想我需要建立cell-object模型,像这样;

var mod = {val: 0, first: 0, second: 0};

其次,我需要创建一个包含 32 个这些对象的数组。

var arr = [];
var i = 1;
function createArray(){
  while (i < 33) {
      if (i<10){
          mod = { 
                  val: i, 
                  first: 0, 
                  second: i 
                }
      } else {
          mod = { 
                  val: i, 
                  first: i.toString().split('').reverse().pop(), 
                  second: i.toString().split('').pop()
                }
          arr.push(mod);
      }
      i++;
  }
};
createArray();

var result = '';
arr.forEach(function(space){
  space = space.first.toString() + space.second.toString();
  if(result.length < 24){
    result += space + ' ';
  } else {
    console.log(result);
    result = '';
  }
});

这对我来说产生了一个奇怪的结果:

01 02 03 04 05 06 07 08 
10 11 12 13 14 15 16 17 
19 20 21 22 23 24 25 26

这是怎么回事?它跳过 0918,但为什么呢?就是看不出来。

编辑

正如 @zerkms 指出的那样,我在 SO 中输入错误。 i++ 应该在 while 循环内;否则会产生无限循环。

问题是您没有在行尾包含最后一个值。

  result += space + ' ';  // always do this
  if(result.length > 24) {
    console.log(result);
    result = '';
  }