Javascript,检查数组和周围的节点

时间:2012-08-31 10:32:19

标签: javascript arrays

Ello Chaps和Chapesses!

我有一个像这样的Javascript数组:

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

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

e.g。从[0,0]开始,检查[0,1][1,0]等等

谢谢!

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

如果您只想访问给定i,j的相邻元素,请访问i-1, ji,j-1i,j+1i+1, j并确保指标为有效的。

它不是很漂亮,但它有效(假定ij始终是有效的指示):

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;
}

返回包含邻居的新数组。当然,不是回归它们,你可以随心所欲地做任何事情;)