2012-08-31 47 views
0

Ello Chaps and Chapesses!Javascript,檢查陣列和周圍的節點

我有一個Javascript數組是這樣的:

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

我的問題是,我怎麼能檢查數組節點周邊每個節點...

例如起始於[0,0],查詢[0,1][1,0]等等

謝謝!

編輯:如果可能的話,我想一個可擴展的解決方案,由此,如果數組是7x7的 - 算法仍然工作...:/

+0

你想要什麼「檢查」?如果你只想訪問給定'i,j'的相鄰元素,則訪問'i-1,j','i,j-1','i,j + 1','i + 1,j'和確保指示是有效的。 –

+0

有沒有更好的方法來做到這一點?如果我的數組更改大小 - 這不會工作:( –

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

@Neurofluxation小姐理解了你的問題,更新了 – xdazz

+0

這也得到了對角元素......也許這是理想的,我只是想指出它(循環看起來好多了);) –

+0

Phwoar xdazz!這是一些性感的代碼! –

1

如果你只是想訪問給定的相鄰元素i,j,然後訪問i-1, j,i,j-1,i,j+1,i+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; 
} 

這返回一個包含鄰居的新數組。當然,不要回他們,你可以做任何你想做的事;)

+0

可愛,歡呼菲利克斯 - 很快就會接受。 –