JavaScript「Keyed Collections」ワークブック構成
🏁 第1章:MapとSetの基本(初級)
💡 学習ポイント
- オブジェクトとの違い
MapとSetの作り方・基本操作(追加・削除・取得・確認)
🧩 練習問題(例)
Mapを作成して、キー"name"に"Halu"をセットしよう。Setに1, 2, 2, 3を追加して、出力結果を確認しよう。Mapに登録されたキーの一覧をfor...ofで表示してみよう。
🔍 解説
Mapは「キーにあらゆる値(オブジェクトもOK)」を使える。Setは「重複なしコレクション」。順序も保持される。
⚙️ 第2章:MapとSetの応用(中級)
💡 学習ポイント
Mapの初期化(配列から)- 反復処理:
forEach,entries(),keys(),values() Setのユニーク性を活かした重複削除
🧩 練習問題(例)
- 配列
[['a', 1], ['b', 2]]からMapを作ろう。 Setを使って[1,2,2,3,3,3]の重複を削除する関数を作ろう。MapをArray.from()で配列に変換して出力してみよう。
🔍 解説
Mapは配列のように初期化できる。Setは配列との相互変換が簡単(Array.from(set))。
🧠 第3章:WeakMapとWeakSet(上級)
💡 学習ポイント
- 「弱い参照」の仕組み
- ガーベジコレクションと自動メモリ解放
- 主な用途(キャッシュ・プライベートデータ管理)
🧩 練習問題(例)
WeakMapを作って、オブジェクトをキーに値を登録しよう。- そのキーを
nullにしたあと、WeakMapから削除される理由を説明しよう。 WeakSetを使って「すでに処理済みのオブジェクト」を記録するコードを書こう。
🔍 解説
WeakMapとWeakSetは キーにオブジェクトしか使えない。- 要素数を数えるメソッドがないのは、ガーベジコレクションを妨げないため。
🧩 第4章:実践チャレンジ(上級+)
💡 学習ポイント
Map・Setを組み合わせて使う- 実際のデータ管理パターンを体験
💻 演習
「ユーザー管理システム」を
MapとSetで作る。
// ユーザーごとに権限を登録する Map
const roles = new Map();
roles.set('Alice', new Set(['read', 'write']));
roles.set('Bob', new Set(['read']));
// Bob に 'write' 権限を追加
roles.get('Bob').add('write');
console.log(roles);
JavaScript発展課題
Map+WeakMapを使って「ユーザー情報(公開/非公開)」を分けて管理してみよう。
最後に(まとめ)
| コレクション | 主な特徴 | キー | 重複 | 主な用途 |
|---|---|---|---|---|
Map | キーに任意の値 | 何でもOK | 可 | データマッピング |
Set | 値の一意集合 | N/A | 不可 | 重複排除・タグ管理 |
WeakMap | 弱参照キー付きMap | オブジェクトのみ | 可 | キャッシュ・隠しデータ |
WeakSet | 弱参照集合 | オブジェクトのみ | 不可 | 処理済み管理 |


