如何用JavaScript从9x9二维数组提取3x3块并转为逗号分隔字符串
实现思路
- 9x9二维数组的3x3独立子块共9个,按从上到下、从左到右的顺序遍历即可。我们可以先定位每个子块的左上角起始坐标:行起始坐标为
blockRow * 3,列起始坐标为blockCol * 3,其中blockRow和blockCol的取值范围都是0~2 - 对每个定位到的子块,遍历内部3行3列的所有元素,按顺序拼接为字符串
- 最后把所有子块的字符串用逗号拼接得到最终结果
代码实现
function get3x3BlocksStr(arr) { const blockStrs = []; // 遍历子块的行分组 for (let blockRow = 0; blockRow < 3; blockRow++) { // 遍历子块的列分组 for (let blockCol = 0; blockCol < 3; blockCol++) { let currentStr = ''; // 遍历当前子块内的3行 for (let i = 0; i < 3; i++) { const rowIndex = blockRow * 3 + i; // 遍历当前子块内的3列 for (let j = 0; j < 3; j++) { const colIndex = blockCol * 3 + j; currentStr += arr[rowIndex][colIndex]; } } blockStrs.push(currentStr); } } return blockStrs.join(','); } // 测试用例 const twoDArray = [ [5, 3, 5, 6, 7, 8, 9, 1, 2], [6, 7, 1, 1, 9, 5, 3, 4, 8], [1, 9, 2, 3, 4, 2, 5, 6, 7], [8, 5, 9, 7, 6, 1, 4, 2, 3], [4, 2, 6, 5, 5, 3, 7, 9, 1], [7, 1, 3, 1, 2, 4, 8, 5, 6], [9, 6, 1, 5, 3, 7, 2, 8, 4], [2, 8, 7, 5, 1, 9, 6, 3, 5], [3, 4, 5, 6, 8, 6, 1, 7, 9] ]; console.log(get3x3BlocksStr(twoDArray));
输出说明
上述测试代码运行后输出结果为:535671192,678195342,912348567,859426713,761553124,423791856,961287345,537519686,284635179
完全匹配需求的格式要求。
内容的提问来源于stack exchange,提问作者TheObands
相关产品推荐
相关产品推荐

