JavaScript 多次元配列と連想配列

出典: フリー教科書『ウィキブックス(Wikibooks)』

目次

[編集] 配列

[編集] 多次元配列

さて、先程配列を説明したが、これは直線的な1次元のデータである。 しかし、配列の中に配列を入れる事によって次のような計算も出来る

 var a = [
   [1,2,3],
   [4,5,6],
   [7,8,9]
 ];
 var b = [
   [1,4,7],
   [2,5,8],
   [3,6,9]
 ];
 var c = [
   [0,0,0],
   [0,0,0],
   [0,0,0]
 ];
 
 for(var i=0;i<3;i++)
   for(var j=0;j<3;j++)
     for(var k=0;k<3;k++)
       c[i][j] += a[i][k]*b[k][j];
 
 document.write( c );

上のプログラムは3×3の行列の計算である。

[編集] 連想配列

配列を扱っていると、各配列の箇所に、決まった目的のデータを入れることが良くある。

この様なものは

document.write( girl["身長"] );  // これで身長を呼び出す。

と出来れば便利である。これを配列の拡張で「連想配列」と言う。

宣言の方法は

var girl ={
  "身長":158,
  "体重":49
}; 

と書く。また、データを増やしたい場合

girl["BMI"] = girl["体重"]/(girl["身長"]*girl["身長"])  // 恐怖の体脂肪率 

と書けば新たに生成される

[編集] 余談:連想配列の起源

連想配列はPerlやPHP、Ruby等のスクリプト言語を修得している読者の方は見覚えのある機能なのではないでしょうか? その他の言語でもC++ではSTLのstd::map、Javaのjava.util.Hashtable等、多くの言語で触れるようになっています。 このように現在では言語の標準機能として広く普及した感じもありますが、この起源は元々awkで採用されていたものが、その子供に当たるPerlで採用されて広がった様です。 JavaScriptの面白いところは、言語全体がこの連想配列と密着している所なのですが、これは最後の章に持っていっておきましょう。

ちなみに英語圏ではこの機能を'hash map'や'hash table'等の名前で紹介していますが、これはデータのメモリ上の置き場をハッシュを求めることで計算しているためです。 この様にその動作原理から名前が来ているものが、邦訳された際により機能の表す原義に近いものになっているのはとても鮮やかです。最初の訳者の腕を感じずにはいられません。(まぁ、C++等の文化圏ではmapと呼ばれるのがそれでも普通なのですが・・・)

ヘルプ