首页 > 解决方案 > 从 9x9 二维数组中获取 3x3 块作为字符串

问题描述

我正在学习 Javascript,目前发现自己遇到以下问题。我需要将 9x9 2d 数组的每个单独的 3x3 块作为字符串,用逗号分隔。

我的意思是,例如,假设我有以下数组:

 var 2dArray = [
[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] ]

结果应该是535671192,678195342, 912348657, ……等等,直到字符串由所有 3x3 块组成。

我认为制作嵌套 for 循环将是最好的方法,但在此过程中感到困惑,我将感谢您的帮助。

谢谢你。

标签: javascriptarraysstring

解决方案


您可以使用两个循环来迭代所有可能的左上角的位置,并使用另外两个循环来获取该正方形中的所有元素。

var arr = [
  [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]
];
let res = [];
for (let i = 0; i < 9; i += 3) {
  for (let j = 0; j < 9; j += 3) {
    let curr = "";
    for (let k = 0; k < 3; k++) {
      for (let l = 0; l < 3; l++) {
        curr += arr[i + k][j + l];
      }
    }
    res.push(curr);
  }
}
console.log(res);


推荐阅读