• ベストアンサー

javascript 変数名の連結をしたい

javascriptで、ある同じ処理をいくつも書くのですが いくつも同じものを書かず、for等で繰り返させたいのです。 また、その際に変数名をばらばらにしたいのですが そのやり方がいまひとつ良く分かりません。 //同じ処理を繰り返さず・・・ area1_flagA = 1 area1_flagB = 1 area1_flagC = 1 area1_flagD = 1 //繰り返し処理で var area_array = [A,B,C,D]; for (var i in area_array){  area1_flag+i(←連結したいができない) = 1 } ※実際はもう少し複雑な処理になります そこで、変数名に変数名を連結させようとしたのですが うまくいきませんでした。 どうすれば、上記のような 繰り返し処理を施すことが可能でしょうか。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

evalを使うのが手っ取り早いわね。 eval("area1_flag" + area_array[i] + "=1"); こんな感じ。

yuzuru0024
質問者

お礼

回答ありがとうございます。 うまくいきました!! evelを使うのですね!

その他の回答 (4)

  • atse
  • ベストアンサー率83% (36/43)
回答No.5

<script type="text/javascript"><!-- var area_array = ["A","B","C","D"]; for (var i in area_array){ this["area1_flag" + area_array[i]] = 1; } alert(area1_flagA + "/" + area1_flagB + "/" + area1_flagC + "/" + area1_flagD); //--></script>

yuzuru0024
質問者

お礼

回答ありがとうございます。 this[]でも no.2さんに教えていただいた eval()と同じようなことができるみたいですね。 参考にしてみます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

配列っていうかオブジェクトでの処理ですねぇ・・・ それとarea_arrayの指定とforの使い方が変ですね こんなかんじ? <script> var area1_flag=new Object; var area_array=["A","B","C","D"]; for(var i in area_array ){ area1_flag[area_array[i]] = 1 } alert(area1_flag["A"]); </script>

yuzuru0024
質問者

お礼

回答ありがとうございます。 参考にしてみます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.3

No1も書いてるけど、そういう場合は配列が良いね 配列っていうのは大抵は数値なんだけど実は文字列にもできる 例えば flag["エンディング"] = 1; //↑は↓と等価 x = "エンディング"; flag[x] = 1; // 半角英数なら↓でも良い。可変文字列で使いたいなら↑ flag.ending = 1;

yuzuru0024
質問者

お礼

回答ありがとうございます。 連想配列ってやつですね。

noname#90596
noname#90596
回答No.1

配列を使ったらどうですか。

yuzuru0024
質問者

お礼

回答ありがとうございます。 通常の変数名だと <div id="area1_flagA1"></div> のようにDHTMLで使用することができるのですが <div id="area1_flagA[1]">のような配列での書き方だと、 うまく動作しないため質問文のような方法とりました。

関連するQ&A