JavaScriptの開発で連想配列を使ったので調べてまとめてみました!
間違っていればご指摘お願いします!
結論
「連想配列とは、配列で添字(インデックス)に数字を与えているのに対して、好きな文字を与えることができる配列のことである。」
sample.js
# 配列
var result_array = [
'70点', # 値1
'60点', # 値2
'92点' # 値3
];
# 連想配列
var result_associative_array = {
tarou : '70点', # キー1 : 値1
jirou : '60点', # キー2 : 値2
hanako : '92点' # キー4 : 値3
}
Hashと同じじゃないの?
それって、RubyでいうHashのことじゃないのかなと思ったので調べたところ、厳密には違うみたいです。
RubyにおけるHash
Rubyのリファレンスマニュアルによると、Rubyにおけるハッシュとは、ハッシュテーブルによる連想配列で、任意のオブジェクトにいるキーと、任意のオブジェクトによる値とを関連付けしています。
つまり、文字列のオブジェクトを配列の添え字に使い、値となるオブジェクトを関連付けし、変数として使えるものがRubyにおけるHashです。
sample2.rb
result_hash = {
"tarou" => "70点",
"jirou" => "60点",
"hanako" => "92点"
}
JavaScriptにおける連想配列
厳密にはJavaScriptには「連想配列」は存在しません。他のプログラミング言語で「連想配列」と呼ばれているものを、JavaScriptでは「オブジェクト」または「オブジェクトリテラル」と呼びます。
そのため、JavaScriptにおいては「連想配列」=「オブジェクト」と考えて問題ないでしょう。
また、連想配列は値としてデータだけしか入れることはできませんが(rubyにおけるHashの場合も)、オブジェクトは関数を格納することができるため、JSにおける連想配列はオブジェクトと呼んでいるそうです。
sample3.js
var result_associative_array = {
tarou : '70点',
jirou : '60点',
hanako : '92点'
getResultJirou: function(){console.log(this.jirou)}
}
まとめ
- 「連想配列とは、配列で添字(インデックス)に数字を与えているのに対し、好きな文字を与えることができる配列のことである。」
- Rubyにおける連想配列はHashだけど、ハッシュテーブルによる連想配列である。
- JavaScriptにおける連想配列は、オブジェクトであり、値にはデータだけでなく関数を格納することができる!
- 「連想配列」と「RubyのHash」と「JavaScriptのオブジェクト」は、似て異なるものだった!
コメント@cid2
0
JavaScriptではコメントは
#
ではありませんよ。