获取每个二维数组元素的邻居

时间:2017-11-11 14:36:10

标签: php node.js

我有像

这样的二维元素数组
1 2 3 
4 5 6
7 8 9

现在我如何获得每个元素的邻居?

对于Ex:1个邻居是[2,4]和2 [1,3,5]等。

建议我该怎么做。

预期产出:

[
1=>[2,4],
2=>[1,3,5],
3=>[2,6],
4=>[1,5,7],
5=>[2,4,6,8],
6=>[3,5,9],
7=>[4,8],
8=>[7,5,9],
9=>[6,8]
]

2 个答案:

答案 0 :(得分:1)

在Js:

假设数组 rowSize columnSize

for(i=0;i<rowSize;i++){

    //neighbours of element array[i][j]

    for(j=0;j<columnSize;j++){
        if(i!=0)
          console.log(array[i-1][j]);

        if(i!=rowSize-1)
          console.log(array[i+1][j]);

        if(j!=0)
          console.log(array[i][j-1]);

        if(j!=columnSize-1)
          console.log(array[i][j+1]);
    }
}

答案 1 :(得分:0)

这是一种简洁,实用的方式,可以简洁地找到邻居。它使用向量定义邻居,因此您也可以使用它来提交其他方式:

&#13;
&#13;
var arr = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]


function neighbors(arr, m, n) {
  // define what a neighbor is
  let v = [[0, 1],[1, 0],[0, -1],[-1, 0]]
  // filter edges & map
  return v.filter(([h, j]) => h + m >= 0 && h + m < arr.length && j + n >= 0 && j + n < arr[0].length)
    .map(([h, j]) => arr[h + m][j + n])

}

console.log(neighbors(arr, 1, 1))
console.log(neighbors(arr, 0, 0))
console.log(neighbors(arr, 2, 2))
&#13;
&#13;
&#13;