ライフゲームをここに構築し、セルのすべての隣接セルをループし、スコアを合計する(各セルは0または1)関数に取り組んでいます。ボードは2次元配列で表されます。通常、セルには8つの隣接セルがあります。問題は、ボードのコーナーにあるセルには3つの近傍しかなく、側にあるセルには5があるということです。以下のコードを使用して配列をループすると、配列内で未定義のセルが返されます。私は0に未定義の変換とスコアを合計することを利用したいが、私はエラーを取得:2次元配列で表されるボード内のセルのすべての近傍をループする方法は?
キャッチされない例外TypeError:プロパティを読み取ることができません「-1」あなたの助けを
未定義のおかげで!
var array = [
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1],
[0,0,1,0,1,0,1,0,1,1]
]
for(var i=0; i < array.length; i++){
for(var j=0; j < array[i].length; j++){
var totalScore = 0;
var scores = [
//i = row in loop
//j = column nested loop
array[i-1][j-1],
//upper left corner
array[i-1][j],
//top side
array[i-1][j+1],
//upper right corner
array[i][j-1],
//left side
array[i][j+1],
//right side
array[i+1][j-1],
//bottom left corner
array[i+1][j],
//bottom side
array[i+1][j+1]
//bottom right corner
];
scores.forEach(function(item){
var score = item;
if(score === "undefined"){
score = 0;
}
totalScore += score;
})
console.log(totalScore);
}
}
'array [i-1] [j-1]'は最初の反復では存在しない配列内の '-1'インデックスを探します。 – Mairaj
'array [i + 1] [j + 1]'は最後の繰り返しに対しても存在しない '10番目のインデックス 'を探します。 – Mairaj
ありがとうございますが、要素が存在しないときにスコア0を設定する方法はありますか? – chemook78