javascript - 从 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 循环将是最好的方法,但在此过程中感到困惑,我将感谢您的帮助。
谢谢你。
解决方案
您可以使用两个循环来迭代所有可能的左上角的位置,并使用另外两个循环来获取该正方形中的所有元素。
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);
推荐阅读
- c# - 转换表达式
> 到表达式 > - c# - 如何在 C# 中通知来自其他类的线程
- elasticsearch - 使用 elasticsearch 进行远程索引时出错
- wpf - WPF,XMAL 百分比间距计算全部错误
- c# - 如何在 C# 控制台应用程序中检索文件夹的共享权限?
- html - 找到了格式错误的“表单”标签助手。标签助手必须有一个开始和结束标签或自闭
- javascript - 在 Angular 上创建级联下拉菜单
- xml - XSD 中可以接受空或只有一个值的数据类型是什么?
- html - 如何更改下拉菜单中部分文本的颜色
- java - 如何在 MacOS Apple Store 中上传应用程序