我有像
这样的二维元素数组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]
]
答案 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)
这是一种简洁,实用的方式,可以简洁地找到邻居。它使用向量定义邻居,因此您也可以使用它来提交其他方式:
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;