javascript - 如何在此框中检查多密度数组中的空值
问题描述
你好,我想知道在 3x3 框周围找到空值的算法
像这样的示例多维数组
[
[" ", " ", "#", "#", "#", " ", " ", " ", " ", " "],
[" ", " ", "#", " ", "#", " ", " ", " ", " ", " "],
[" ", " ", "#", "#", "#", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", "#", "#"],
[" ", " ", " ", " ", " ", " ", " ", " ", "#", " "],
[" ", " ", " ", " ", " ", " ", " ", " ", "#", "#"],
[" ", " ", " ", " ", " ", " ", " ", " ", " ", " "]
]
我只想得到 3x3 的盒子,所以那个盒子里的空值我可以填充我想要的任何东西,如何解决/验证这种情况?所以结果是得到那个空值INDEX
我正在尝试这个:
for (let i = 0; i < array.length; i++) {
for (let j = 0; j < array[i].length; j++) {
if(array[i]){
if(array[i][j] == '#' &&
array[i+1][j] == '#' &&
array[i+2][j] == '#' &&
array[i][j+1] == '#' &&
array[i][j+2] == '#' &&
array[i+2][j+2]
){
console.log(i);
}
}
}
}
解决方案
1)您的盒子是 3x3 = 9 个要检查的单元格。您只检查其中的六个。
2)您正在检查 index + 2 从左上角开始向右和向下,这意味着您应该停止在length - 2
.
3)您基本上需要解决该 3x3 区域中的每个单元格。
for (let i = 0; i < array.length - 2; i++) {
for (let j = 0; j < array[i].length - 2; j++) {
if (
// first row
array[i][j] == '#'
&& array[i][j + 1] == '#'
&& array[i][j + 2] == '#'
// second row
&& array[i + 1][j] == '#'
&& array[i + 1][j + 1] == ' '
&& array[i + 1][j + 2] == '#'
// third row
&& array[i + 2][j] == '#'
&& array[i + 2][j + 1] == '#'
&& array[i + 2][j + 2] == '#'
) {
console.log('box upper-left corner is: ' + i + ' x ' + j + '<br />');
}
}
}
如果您正在寻找框内“emtpy”单元格的地址,那么您正在寻找i + 1
and j + 1
。
推荐阅读
- python - python 3 print end=""的pycharm语法检查错误但仍然可以正常工作
- javascript - 页面打开时如何预先计算表格单元格中的总数
- haskell - Verify RSA signature with public key in PEM format in Haskell
- php - 在 Laravel 的 Eloquent 查询中使用“with”时如何添加 where 子句
- c - 了解汇编与 C 对应物
- java - Tab 块中的所有行
- c# - 为什么 POCO 对象是使用类而不是结构创建的
- angular - Angular:图像未在生产中加载
- mysql - ,(comma) 和 and in group by 有什么区别?
- kubernetes - 如何修复 Windows 10 上 minikube 版本 0.33.1 的 minikube 安装失败?- 重新启动集群时出错 - 加载 apiserver 证书失败