2017-12-20 16 views
0

多分簡単な間違いですが、私はあなたの助けが必要です。Javascript 2D Array TypeError

var x,y = 0; 

ワーキングコード:

array[x][y] = 10; 

間違ったコード:

array[x + 1][y] = 10; 

Uncaught TypeError: Cannot read property '0' of undefined

配列:

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

「ArrayOutOfBounds」ではありません。私はエラーがないグーグルクロームコンソールでこの関数を呼び出した場合

...

+1

の作品は、どのように我々は、我々は 'X'と 'y'が何であるかわからない場合は、こののお手伝いをすることになっていますか?あなたは範囲外の問題ではないと言いましたが、それはエラーと症状が私にそれが示唆しているものです。 'x'は明らかに' 9'であるので、 'x + 1'は' 10'であり、 'array [10]'には配列がありません。 –

+0

'x'が持っているので、' var x、y = 0; ':[*配列アクセス式は動作しません(https://jsfiddle.net/91wqsLLr/)値 'undefined'、' array [undefined] 'は' undefined 'なので、 '[y]'は読み出すことができません。 'var x = 0、y = 0;'に変更すると、両方の式が動作します:https://jsfiddle.net/91wqsLLr/1/ –

答えて

0

私のエラーの一つは、xとyが文字列だったということでしたので、私はそれを解析する必要があります。 もう1つの間違い(「T.J. Crowder」ありがとう)は、使用する変数(ここではz1とz2)の定義です。

x = parseInt(x); 
y = parseInt(y); 

var z1 = 0; 
var z2 = 0; 

... 

z1=x+1: 
z2=y; 

... 

array[z1][z2] = 10; 

今では

+0

Ah!だから、 'x'は' '2 ''だったので、 'x + 1'は' '21" 'だったので、配列のインデックス21にはエントリがありませんでした:-) –