0

Ello Chaps 和 Chapesses!

我有一个这样的Javascript数组:

var tinkerArray = [
  [0,0,0],
  [0,1,0],
  [0,0,0]
];

我的问题是,如何检查每个节点周围的数组节点......

例如从[0,0]、检查[0,1][1,0]开始

谢谢!

编辑:如果可能的话,我想要一个可扩展的解决方案,如果数组是 7x7 - 该算法仍然可以工作......:/

4

2 回答 2

2

更新:

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;
}
于 2012-08-31T10:35:39.947 回答
1

如果您只想访问给定的相邻元素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;
}

这将返回一个包含邻居的新数组。当然,您可以做任何您想做的事情,而不是退回它们;)

于 2012-08-31T10:44:25.933 回答