JavaScriptでの連想配列
とうとう始まった大型連休ですが、皆様はいかがお過ごしでしょうか?
あいにくの空模様でお出かけは難しい状態の方も多いかと思いますが、おうちでゆっくりするのもよろしいかと思いますです。まあ、わたしはカレンダー通りなんですけどね!
と、こんな状態なのですが、ちょこっとあれこれする際にECMA3な環境、まあ、ExtendScriptっていうんですけど、そこでのデータ取り廻しについてちょっと書いておこうかなって思った次第です。
という事で、JavaScriptの配列(Allay)についてのおさらいです。
var ar = ["あ","い","う","え","お"];
基本的な使い方ですね。各要素にアクセスするにはインデックスを指定します。
alert(ar[2]);
こう書くと三番目の要素である「う」がalertダイアログに表示されるわけです。JavaScriptの場合indexを0からカウントしますのでインデックスが2の場合は3番目の要素を指定しているという事に注意が必要です。
また、配列という構造は多次元化が可能です。
var arr = [
["あ","ア","a"],
["い","イ","i"],
["う","ゥ","u"],
["え","エ","e"],
["お","オ","o"]
];
このように要素が入れ子状になっているものなのですが、これの各要素にアクセスするには
alert(arr[0][1]);
このように記述します。これを実行すると0番目の要素の2番目の要素が取り出されalertダイアログ上には「ア」が表示されます。これは二次元配列って呼ばれたりするのですが、各要素に対してのアクセスは各インデックスの気記述で行われます。
さて、php等の言語で良く利用されるものに連想配列と呼ばれるものがあります。これはインデクスの数字の代わりにキーワードを利用して配列にアクセスできるものです。
$ar = ["あ"=>"ア","い"=>"イ","う"=>"ウ","え"=>"エ","お"=>"オ"];
echo ar["う"];
phpで書くとこのような感じです。各要素はキーワードと値の組として配列に収容されていて、各要素には数字のインデックスの代わりにキーワードを利用して取り出すことが出来ます。
JavaScriptでは通常の二次元配列ではキーワードによるアクセスは出来ませんので配列の構造にアクセスするには順番に値を見ていってアクセスしたい要素のキーワードと合致するものをループ処理で探す必要があります。
とても面倒です。という事でJavaScriptではこのようなケースでは次のように書きます。
var obj = {あ:"ア",い:"イ",う:"ウ",え:"エ",お:"オ"}
alert(obj["あ"])
ご覧の通り厳密に言うと、この構造は配列ではなくオブジェクトです。しかし、各要素へのアクセスは上に示したようにブラケット内にキーワードを書くことで実現できます。
各アプリケーションのオブジェクトモデル上ではこのような構造は利用されていませんが、大量のデータを読み込んで処理を行いたい場合等では各要素へのアクセスをシンプルに記述できるようになる可能性があります。
うまく使い分けたいものです。