Ruby
JavaScript
0
どのような問題がありますか?

投稿日

更新日

連想配列とは?

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のオブジェクト」は、似て異なるものだった!

参考

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
yuporon

コメント

# 配列

JavaScriptではコメントは#ではありませんよ。

0
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
0
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー