めちゃくちゃ苦労したので備忘録に。
jQuery(javascript)にて二次元配列を扱いました。
形としては以下のような感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
var test = [ [ 'テスト1-1', 'テスト1-2', 'テスト1-3', 'テスト1-4'], [ 'テスト2-1', 'テスト2-2', 'テスト2-3', 'テスト2-4'], [ 'テスト3-1', 'テスト3-2', 'テスト3-3', 'テスト3-4'] ]; var num1 = '0', num2 = '1'; var result = test[num1][num2]; |
一番下でnum2に対してエラーが出ます。エラーの内容は
cannot read property ‘1’ of undefined
となっています。
配列で「Cannot read property」エラーが出る場合の対処法
結論から述べてしまうと、配列の添え字に文字列を入れているのがダメっぽいです。
エラーの意味は「undefined」の「’1’」は読み込めないよ!という意味なのですが、
添え字自体が原因でも起こるようですね。
調べてみた感じだと、
- スコープの対象外(別の関数内で配列を定義している)
- 二次元配列の場合は宣言の仕方が特殊
- 配列の存在しない場所にアクセスしている(3つしかないのに、4番目にアクセスする)
といった原因が他にあるようです。
添え字が原因なので3番目のエラーが当てはまってそうですね。
変数の宣言時に「”」をつけないとか、
変数を添え字に代入する際に「parseInt」するなどして回避してください。
もしも色々と弄ってみてダメな場合は、添え字の型を見直してみてくださいね。