- 締切済み
二次元ハッシュの引き出し方について
2次元のハッシュをObjectを用いて作り、以下の様に第一キー固定で第二キーを取り出したいです。 ----------------------------------------------------------- hash = new Object; hash[3] = new Object; hash[3][1] = 3; hash[3][2] = 6; hash[3][3] = 9; for (key in hash[3]){ _root.debug+=key; } ----------------------------------------------------------- 上記は上手く動かないので、以下の様に修正しました。 ----------------------------------------------------------- hash = new Object; hash[3] = new Object; hash[3][1] = 3; hash[3][2] = 6; hash[3][3] = 9; tmp=hash[3]; for (key in tmp){ _root.debug+=key; } ----------------------------------------------------------- いったんtmpに代入する事で期待通りの結果が得られましたが、スッキリしません。 Perl等の他言語では、「無名ハッシュ」という概念を表記化することができるので、Actionscriptでも良い表記方法がありましたら教えてください。 ※オーサリングルールはParaFla! ActionSctiptは1.0相応です。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- an631
- ベストアンサー率82% (28/34)
paraflaではそうなってしまうんですね。 失礼致しました。
- an631
- ベストアンサー率82% (28/34)
for (key in hash[3]){ } これで正常に第二キーが取れています。 ただ_root.debugの中身がundefined321となってしまうのは _root.debugが初期化されていないからです。 hash = new Object; hash[3] = new Object; hash[3][1] = 3; hash[3][2] = 6; hash[3][3] = 9; _root.debug = ""; for (key in hash[3]){ _root.debug+=key; }
- an631
- ベストアンサー率82% (28/34)
>第一キー固定で第二キーを取り出したいです。 実際に第二キーが取り出せていると思いますが・・・ 期待道りの結果とはどんな結果なんでしょうか? 私の環境では両方とも _root.debugの値はundefined321となります。
補足
ご回答ありがとうございます。 >>第一キー固定で第二キーを取り出したいです。 > >実際に第二キーが取り出せていると思いますが・・・ >期待道りの結果とはどんな結果なんでしょうか? 順番はソートなどしてないので、変わるかもしれませんが、 321 と第二キーが表示されるのが期待してる結果です。 > >私の環境では両方とも >_root.debugの値はundefined321となります。 サンプルに提示した例は行頭が全角スペースにしてます。(注意を記載しないですみません) もしかしたら、そのせいかもしれません。
補足
ご回答ありがとうございます。 私はオーサリングツールはParaFla!を使用してるのですが、 ParaFla!(ActionSctipt1.0)だとfor (key in hash[3]){ ではキーは入ってこないのようです。。 因みに _root.debug = ""; はなくても大丈夫でした。