• ベストアンサー

配列名の定義の仕方?

配列名を操作したいのですがうまくいきません。やりたいことは下記の★部分で配列名を定義したいのですが、定義の方法がうまくいっていないようです。 //配列名と要素を設定 var station1 = new Array("東京","渋谷","新宿"); var station2 = new Array("横浜","藤沢","川崎"); var station3 = new Array("千葉","浦安","津田沼"); //★任意の番号を設定し配列名を定義 var no = 1; //ここでは仮に1とする var arrayName = "station" + no; ←ここで「station1」としたい document.write(arrayName[2]); 上記ではうまくいきません。どうやったらstation1という配列名を作って要素を取得できるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

トリッキー?な方法ですが、eval関数を使うと実現出来ます。 var station1 = new Array("東京","渋谷","新宿"); var station2 = new Array("横浜","藤沢","川崎"); var station3 = new Array("千葉","浦安","津田沼"); var no = 1; eval("var arrayName = station" + no + ";"); document.write(arrayName[2]); evalは与えられた文字列を実行(評価)するので、この場合は > var arrayName = station1; が実行されます。 蛇足ですが、こういう場合は多次元配列を使った方が楽です。 var stations = new Array(); stations[1] = new Array("東京","渋谷","新宿"); stations[2] = new Array("横浜","藤沢","川崎"); stations[3] = new Array("千葉","浦安","津田沼"); var no = 1; var arrayName = stations[no]; document.write(arrayName[2]);

suffre
質問者

お礼

すばやいご回答ありがとうございます! evalを使うのですね。いろいろ調べていたのですが、なかなかこういう方法が見つからなかったので大変感謝しております。 また、別方法も教えていただきましてありがとうございます。なるほど、多次元にするとうまくいきますね。とても参考になりましたm(_ _)m

その他の回答 (1)

  • ESate
  • ベストアンサー率64% (11/17)
回答No.2

配列がグローバルで定義されているのであれば windowオブジェクトに属しているので arrayName = window["station"+no]; と書ける

suffre
質問者

お礼

ありがとうございます。グローバルでの設定はまた違うのですね。 勉強になりました。

関連するQ&A

専門家に質問してみよう