Topiqlo ロゴ

連想配列

公開日: 2025/06/02

連想配列とは?キーで管理するデータ構造の基本と使い方

はじめに

プログラミングで「名前と値」「IDとデータ」など、特定の名前(キー)に対して情報(値)を対応付けて扱いたい場面は多くあります。そうした用途に最適なのが「連想配列」です。この記事では、連想配列の定義、使い方、普通の配列との違いや注意点について詳しく解説します。

基本情報・概要

連想配列(associative array)とは、インデックスの代わりに「キー」で要素をアクセスする配列的な構造です。JavaScriptにおいては「オブジェクト」がこの役割を果たします。

const user = {
    name: "Taro",
    age: 30,
    isAdmin: true
};
console.log(user["name"]);  // "Taro"
console.log(user.age);      // 30

JavaScriptには「連想配列型」という型は存在せず、通常のオブジェクト(Object)を連想配列のように扱うというのが正確な表現です。

比較・分類・特徴の表形式まとめ

特徴項目内容
キーの型基本的に文字列(Symbolや数値は文字列に変換)
値の型任意(文字列、数値、配列、オブジェクトなど)
要素の順序基本は挿入順を保持(ES2015以降)
アクセス方法
user["key"]
または
user.key
用途名前付きデータの管理、設定情報、マッピングなど

深掘り解説

通常の配列との違い

  • 配列(Array) は数値インデックスでアクセス

  • 連想配列(Object) は文字列キーでアクセス

    const arr = ["apple", "banana"]; const obj = { fruit1: "apple", fruit2: "banana" };

    console.log(arr[0]); // "apple" console.log(obj["fruit1"]); // "apple"

キーの動的生成

変数の内容をキーにしたい場合、ブラケット記法(

[]
)を使います。

const key = "email";
const user = {
    name: "Hanako",
    [key]: "hanako@example.com"
};

ネストされた連想配列

連想配列は入れ子にして複雑なデータ構造を表すことも可能です。

const users = {
    user1: { name: "Taro", age: 20 },
    user2: { name: "Hanako", age: 22 }
};
console.log(users["user2"].name); // "Hanako"

応用・発展的な使い方

Object.keys
,
Object.values
,
Object.entries

連想配列の中身をループで扱いたい場合に便利です。

const user = { name: "Taro", age: 30 };

Object.keys(user);   // ["name", "age"]
Object.values(user); // ["Taro", 30]
Object.entries(user); // [["name", "Taro"], ["age", 30]]

Map
との使い分け

ES6以降は

Map
も連想配列的に使えるが、違いがあります。

比較項目オブジェクト(Object)Map
キーの型文字列 or Symbolのみ任意の型(オブジェクトも可)
順序の保証挿入順に保持(仕様次第)常に挿入順
パフォーマンス小規模ならObjectで十分大規模 or 順序付きならMap推奨
const map = new Map();
map.set("id", 123);
map.set("name", "Taro");
console.log(map.get("name")); // "Taro"

よくある誤解と注意点

  • オブジェクトに数値キーを使っても、実体は文字列になる
  • 配列に
    key: value
    を追加しても、それは「連想配列」ではなく「配列+オブジェクト」になる
  • for...in
    では prototype の継承プロパティも拾う →
    hasOwnProperty
    チェック推奨
  • オブジェクトのキーに順序を期待しすぎない(Map使用を検討)

まとめ

連想配列は「名前付きデータ」を扱う場面で非常に便利な構造です。JavaScriptではオブジェクトでこれを実現し、柔軟かつ効率的にキーと値のペアを管理できます。動的なデータ構造や複雑なマッピングにも使えるため、しっかり使いこなせるようになっておきましょう。