Posts Tagged ‘Object’

このページの目次

Javascriptって2次元の連想配列できないの?

金曜日, 11月 6th, 2009

こんにちは、なかわけです。

今日仕事中にJavascriptにハメられたことをメモ。
メモしておけば同じ過ちをしないと思ったので。

2次元の連想配列が作りたくで以下のように書きました。

//TypeA
TypeA = {};
TypeA['hoge']['fuga'] = 'piyo';
alert(TypeA['hoge']['fuga']);

こうすると、alertはでないし、なかわけの環境ではスクリプトエラーも出ませんでした。
おかしいなあと思って、その時はとりあえず1次元の連想配列でやり過ごしました。

お家帰って思いつきました。
TypeA = {};
はObjectであっても、
TypeA['hoge']
はObjectではないのでfugaプロパティが追加できない(配列的に扱えない)!

てことで、以下

//TypeB
TypeB = {};
TypeB['hoge'] = {fuga : 'piyo'};
alert(TypeB['hoge']['fuga']);

のように書くか、もしくは

//typeC
TypeC = {};
TypeC['hoge'] = {};
TypeC['hoge']['fuga'] = 'piyo'
alert(TypeC['hoge']['fuga']);

のように書く必要があったのですね。
あーしょうもないことに時間費やした・・・。
でも、ここにメモしたので一生忘れない!

AS3.0で連想配列を作ろうとしたら

土曜日, 1月 31st, 2009

こんにちは、なかわけです。

ついこの間Flashを編集していて配列を作ろうと思ったらできませんでした。

var myArray:Array = new Array();
myArray['hoge'] = "こんにちは";
myArray['fuga'] = "こんばんは";

できない・・・。

Flashのヘルプを検索しても「連想配列」について1件もヒットしませんでした。

もしかして、連想配列使えなくなった!?
いや待て。そんなわけない!

Googleで検索したところすぐ見つかりました。

AS3.0で連想配列を作るときは、ArrayクラスのオブジェクトではなくObjectクラスのオブジェクトと使うようです。
配列なのに! 

くそぅ、一時間無駄にしました・・・