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

时间:2015-09-02 23:50:02

标签: javascript node.js algorithm console.log

我的输出需要是:

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

我有点不习惯,而且开始时遇到了麻烦。到目前为止,我将引导您完成我的思考过程,但如果您能够向我推进正确的方向,那就太棒了!

首先,我想我需要设置像这样的单元对象模型;

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循环中;否则会产生无限循环。

1 个答案:

答案 0 :(得分:1)

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

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