JavaScript | 第11章「キー付きコレクション」

javascrpit JavaScript
スポンサーリンク

JavaScript「キー付きコレクション」要点まとめ

1. 概要

  • 「キー付きコレクション」は キーで値を管理する特別なデータ構造
  • 主な種類:
    • Map
    • WeakMap
    • Set
    • WeakSet

2. Map(マップ)

  • キーと値のペアを保持するコレクション。
  • 任意の型をキーに使える(オブジェクトや関数もOK)。
  • 挿入順序を保持し、要素数は .size で取得できる。

主なメソッド

set(key, value)   // 登録
get(key)          // 取得
has(key)          // 存在確認
delete(key)       // 削除
clear()           // 全削除
JavaScript

const map = new Map();
map.set("cat", "meow");
console.log(map.get("cat")); // "meow"
JavaScript

3. WeakMap(ウィークマップ)

  • Map に似ているが キーはオブジェクトのみ
  • 弱い参照(weak reference) を使うため、
    参照が切れたオブジェクトは自動で削除される(ガベージコレクション対応)。
  • 列挙不可for...of などで全体を走査できない)。

用途例:
オブジェクトに「外部から見えないプライベートデータ」を紐づける。

4. Set(セット)

  • 重複しない値のコレクション
  • 順序を保持し、値は一意。
  • 値の追加・削除・確認が簡単。

主なメソッド

add(value)     // 追加
has(value)     // 存在確認
delete(value)  // 削除
clear()        // 全削除
JavaScript

const set = new Set([1, 2, 2, 3]);
console.log(set); // {1, 2, 3}
JavaScript

配列⇔セット変換

const arr = [1, 2, 2];
const uniqueArr = [...new Set(arr)]; // 重複除去 → [1, 2]
JavaScript

5. WeakSet(ウィークセット)

  • Set に似ているが、オブジェクトのみ格納可能
  • 弱参照なので、オブジェクトが他で使われなくなれば自動で削除。
  • 列挙不可(中身を取り出すメソッドがない)。

用途例:
オブジェクトに「一時的な印」をつける(例えば「処理済みフラグ」など)。

6. 等価性のルール(SameValueZero)

  • MapSet で「同じ値か」を判断する仕組み。
    === に似ているが、以下が違う:
    • NaNNaN と等しい(Set で重複しない)
    • +0-0 は等しい

7. 使い分けまとめ

構造内容特徴主な用途
Mapキーと値任意のキー型、順序保持データマッピング
WeakMapオブジェクト → 値弱参照、非列挙プライベートデータ管理
Set値のみ重複なし、順序保持重複排除・一意集合
WeakSetオブジェクト集合弱参照、非列挙処理済みフラグなど

イラスト付き図解(Map vs Set の違い)

タイトルとURLをコピーしました