首页 > 解决方案 > 如何在此框中检查多密度数组中的空值

问题描述

你好,我想知道在 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);
         }
      }

    }
  }

标签: javascriptloopsfor-loopmatrixmultidimensional-array

解决方案


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 + 1and j + 1


推荐阅读