我的输出需要是:
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
这里发生了什么?它正在09
和18
上跳过,但为什么呢?我只是看不到它。
修改
正如 @zerkms 指出的那样,我输入SO时出错了。 i++
应该在while循环中;否则会产生无限循环。
答案 0 :(得分:1)
问题是你在行尾没有包含最后一个值。
result += space + ' '; // always do this
if(result.length > 24) {
console.log(result);
result = '';
}