创建一个没有任何 headers 的特殊字符 table

Creating a special characters table without any headers

我在一个数组中有 128 个特殊字符。我正在尝试创建一个没有任何 headers 的特殊字符 table,它有 16 个单元格长且有 8 行,但我在创建循环的逻辑时遇到了问题。我删除了创建 table 的部分,因为它不相关。

var rowCount = 8;

// For each Row
for (var r = 0; r < rowCount; r++) {
  for (var c = (0 + (r * 8)); c < (r * 8) + 16; c++) {
    console.log(c);
  }
}

因此,对于每一行,我试图遍历 128 个字符数组的 16 个项目。 我的第一个循环,c 打印出 0-15,正如我所期望的,但是当 r 进入第二次迭代时,c 从 8-23 开始打印,这不是我想要的想。我试图让它打印上一次迭代之后的内容,所以 16-32,然后是第三次迭代 33-49,依此类推。

任何人都可以向我解释我做错了什么以及如何纠正我的逻辑吗?

不要在列的嵌套循环声明中进行任何复杂的数学运算,而是保持该部分简单 0-15 并在之后进行数学运算。 for 循环的开始和结束位置最终并不重要,因为行数和列数始终相同(因为您已经静态声明了它们)。

即,您正在尝试在内循环迭代中完成此操作:

  • for(var c = 0; c < 16; c++){}
  • for(var c = 16; c < 32; c++){}
  • for(far c = 32; c < 48; c++){}

for 循环开始和结束的实际数字最终是任意的,重要的是您能够计算它应该迭代的次数...在本例中为列的 16 次。所以 0-16 就是你所需要的。

var rowCount = 8;
// For each Row
for(var r = 0; r < rowCount; r++){
    // opening <tr>
    for(var c = 0; c < 16; c++){
        console.log( (r * 16) + c );
        console.log("r" + r + "c" + c);
        // do <td> stuff
    }
    // closing </tr>
}

注意:代码片段切断了一些较早的控制台日志,因此您看不到开头,所以这里是 fiddle。 https://jsfiddle.net/u7fLdt2w/