エロチャップスとチャペス!
次のようなJavascript配列があります。
var tinkerArray = [
[0,0,0],
[0,1,0],
[0,0,0]
];
私の質問は、各ノードを囲む配列ノードを確認するにはどうすればよいですか...
例: で始まる[0,0]
、チェック[0,1]
など[1,0]
ありがとう!
編集:可能であれば、配列が7x7の場合、アルゴリズムは引き続き機能するスケーラブルなソリューションが必要です... :/
エロチャップスとチャペス!
次のような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;
}
これは、隣人を含む新しい配列を返します。もちろん、それらを返す代わりに、好きなことをすることができます;)