前提・実現したいこと
Javascriptで*でできた図形の外周を求める式を求めるプログラムを構築中です。
隣り合うブロックを出力するためにインデックスに+1をして配列を指定すると以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
/workspace/Main.js:70 if (array[x+1][y]) { ^ TypeError: Cannot read property '2' of undefined at Interface.<anonymous> (/workspace/Main.js:70:27) at Interface.emit (events.js:327:22) at Interface.close (readline.js:416:8) at ReadStream.onend (readline.js:194:10) at ReadStream.emit (events.js:327:22) at endReadableNT (_stream_readable.js:1220:12) at processTicks AndRejections (internal/process/task_queues.js:84:21)
該当のソースコード
Javascript
1 2// *でできた図形(空欄には.がはいる) 3 var array = 4 [ 5 ['.', '.', '*', '.'], 6 ['.', '.', '*', '.'], 7 ['*', '*', '*', '.'], 8 ['.', '.', '*', '.'] 9 ]; 10 11// 全体の幅、高さ 12var A = [4, 4]; 13 14 15// 要素の数だけ繰り返す 16 for (var k = 0; k < A[0] * A[1]; k++){ 17 // (x,y) =要素の位置を表す 18 var x = Math.floor(k / A[0]); 19 var y= Math.floor(k % A[1]); 20 21 if ( array[x][y] === "*"){ 22 23 if (array[x+1][y]) { //エラーの場所です! 24 console.log(array[x+1][y]); 25 } 26 } 27 }
試したこと
①以下のように変換したところ、次のようなエラーが出ました。
if (array[x+1][y])
↓
if (array[x+1][0])
TypeError: Cannot read property '0' of undefined
at Interface.<anonymous> (/workspace/Main.js:70:27)
at Interface.emit (events.js:327:22)
at Interface.close (readline.js:416:8)
at ReadStream.onend (readline.js:194:10)
at ReadStream.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1220:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
②array[x][y]は正常に出力されます。
補足情報(FW/ツールのバージョンなど)
指摘いただいた以下の内容を修正しました。
①「if ( array[x][y] === "#"){ ↑ご提示のコードでは、この条件が成立することはないように思えます。」
if ( array[x][y] === "#")
↓
if ( array[x][y] === "*")
回答1件
あなたの回答
tips
プレビュー