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"
JavaScript3. 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]
JavaScript5. WeakSet(ウィークセット)
Setに似ているが、オブジェクトのみ格納可能。- 弱参照なので、オブジェクトが他で使われなくなれば自動で削除。
- 列挙不可(中身を取り出すメソッドがない)。
用途例:
オブジェクトに「一時的な印」をつける(例えば「処理済みフラグ」など)。
6. 等価性のルール(SameValueZero)
MapやSetで「同じ値か」を判断する仕組み。===に似ているが、以下が違う:NaNはNaNと等しい(Setで重複しない)+0と-0は等しい
7. 使い分けまとめ
| 構造 | 内容 | 特徴 | 主な用途 |
|---|---|---|---|
| Map | キーと値 | 任意のキー型、順序保持 | データマッピング |
| WeakMap | オブジェクト → 値 | 弱参照、非列挙 | プライベートデータ管理 |
| Set | 値のみ | 重複なし、順序保持 | 重複排除・一意集合 |
| WeakSet | オブジェクト集合 | 弱参照、非列挙 | 処理済みフラグなど |
イラスト付き図解(Map vs Set の違い)

