JavaScript创建无表头特殊字符表时双层循环逻辑错误如何修正
错误逻辑分析
内层循环的索引偏移量计算错误:每行需要遍历16个元素,行与行之间的索引间隔是16,你代码里写的偏移量是r * 8,步长只取了要求值的一半。
第一行r=0时,0乘任何数都是0,所以起始索引刚好是0,配合结束条件0+16刚好输出0-15,碰巧符合预期;到第二行r=1时,起始索引变成1*8=8,就会输出8-23,和预期的16起始偏差8个位置,后续每一行都会比预期提前8个索引开始遍历。
修正代码
把偏移计算的乘数从8改为16即可,修正后代码如下:
const rowCount = 8; const colCountPerRow = 16; const specialChars = []; // 替换为你存储128个特殊字符的实际数组 for (let r = 0; r < rowCount; r++) { const currentRowStart = r * colCountPerRow; for (let c = currentRowStart; c < currentRowStart + colCountPerRow; c++) { // 此处直接取 specialChars[c] 填充到对应表格单元格即可 console.log(c, specialChars[c]); } }
遍历范围验证
修正后每一行的索引范围完全匹配需求:
- r=0:索引0~15,共16个元素
- r=1:索引16~31,共16个元素
- r=2:索引32~47,共16个元素
- r=3:索引48~63,共16个元素
- r=4:索引64~79,共16个元素
- r=5:索引80~95,共16个元素
- r=6:索引96~111,共16个元素
- r=7:索引112~127,共16个元素
总计遍历128个元素,刚好覆盖整个长度为128的数组,无重叠无遗漏。
内容的提问来源于stack exchange,提问作者Lynskey08
相关产品推荐
相关产品推荐

