ここ最近paizaの単語のカウント問題を解いていたけど、最終問題まで解けた!
段階的に解いていくうちに学んだSet
とMap
について改めてまとめたい!
JavaScript
の Set
と Map
はどちらもデータを格納するけど、用途や特性が異なる!
(いろいろ間違ってたらごめんなさい。(m´・ω・`)m ゴメン…ぜひご教示ください(^^ゞ)
✅ Set(集合)
💡 特徴
- 値のみを格納(キーがない)
- 重複を許さない(同じ値は 1 つだけ)
- 要素の順序を保持(挿入順)
- 配列のように扱えるが、重複を排除したい場合に適している
🛠 主な操作
🔹 使用例
const mySet = new Set();
// 値を追加
mySet.add("apple");
mySet.add("banana");
mySet.add("apple"); // 重複は無視される
console.log(mySet); // Set(2) { 'apple', 'banana' }
console.log(mySet.has("apple")); // true
console.log(mySet.size); // 2
// 値を削除
mySet.delete("banana");
console.log(mySet); // Set(1) { 'apple' }
// 全削除
mySet.clear();
console.log(mySet.size); // 0
✅ Map(連想配列 / ハッシュマップ)
💡 特徴
- キーと値のペア を格納できる
- キーにあらゆるデータ型を使える(オブジェクトや関数もOK)
- キーの順序を保持
-
Object
の代わりに使えるが、Map
はキーを安全に扱える
🛠 主な操作
🔹 使用例
const myMap = new Map();
// キーと値を追加
myMap.set("name", "Alice");
myMap.set(123, "Number Key");
myMap.set({ obj: true }, "Object Key");
console.log(myMap.get("name")); // Alice
console.log(myMap.get(123)); // Number Key
// キーの存在をチェック
console.log(myMap.has("name")); // true
// キーを削除
myMap.delete(123);
console.log(myMap.size); // 2
✅ Set と Map の違いまとめ
✅ どちらを使うべきか?
✅ Set と Map を使った実践例
🔹 例1: 文字列の重複チェック(Set
)
const words = ["apple", "banana", "apple", "orange", "banana"];
const uniqueWords = new Set(words);
console.log([...uniqueWords]); // ['apple', 'banana', 'orange']
🔹 例2: 単語の出現回数カウント(Map
)
const words = ["apple", "banana", "apple", "orange", "banana"];
const wordCount = new Map();
words.forEach(word => {
wordCount.set(word, (wordCount.get(word) || 0) + 1);
});
console.log(wordCount);
// Map(3) { 'apple' => 2, 'banana' => 2, 'orange' => 1 }
✅ まとめ
✔ Set
は重複を排除し、値のコレクションを管理するのに最適
✔ Map
はキーと値のペアを管理するのに最適
✔ 順序を保持したい場合、どちらも for...of
で順番通り取得可能
これで Set
と Map
の違い がバッチリ理解できたね! 🎯