Ello Chaps 和 Chapesses!
我有一个这样的Javascript数组:
var tinkerArray = [
[0,0,0],
[0,1,0],
[0,0,0]
];
我的问题是,如何检查每个节点周围的数组节点......
例如从[0,0]
、检查[0,1]
等[1,0]
开始
谢谢!
编辑:如果可能的话,我想要一个可扩展的解决方案,如果数组是 7x7 - 该算法仍然可以工作......:/
Ello Chaps 和 Chapesses!
我有一个这样的Javascript数组:
var tinkerArray = [
[0,0,0],
[0,1,0],
[0,0,0]
];
我的问题是,如何检查每个节点周围的数组节点......
例如从[0,0]
、检查[0,1]
等[1,0]
开始
谢谢!
编辑:如果可能的话,我想要一个可扩展的解决方案,如果数组是 7x7 - 该算法仍然可以工作......:/
更新:
function getSurrounding(arr, i, j) {
var m, n, result = [];
for (m = i - 1; m <= i + 1; m++) {
if (m in arr) {
for (n = j - 1; n <= j + 1; n++) {
if (n in arr[m] && !(m == i && n == j)) {
result.push(arr[m][n]);
}
}
}
}
return result;
}
如果您只想访问给定的相邻元素i,j
,请访问i-1, j
, i,j-1
, i,j+1
,i+1, j
并确保索引有效。
它不是很漂亮,但它有效(它假设i
并且j
始终是有效的指标):
function neighbours(arr, i, j) {
var n = [];
if((i-1) in arr) {
n.push(arr[i-1][j]);
}
if((j-1) in arr) {
n.push(arr[i][j-1]);
}
if((j+1) in arr) {
n.push(arr[i][j+1]);
}
if((i+1) in arr) {
n.push(arr[i+1][j]);
}
return n;
}
这将返回一个包含邻居的新数组。当然,您可以做任何您想做的事情,而不是退回它们;)