JavaScriptのMapとSetの挙動について
今回はMapとSetを整理するために記事を書くことにしました。
そもそもMapとSetとは?
Map
-> キーと値がセットのデータの入れ物
Set
-> 重複する値を許さないデータの入れ物
ObjectとMapの比較
Objectも同様にキーと値がセットになっているデータですが、
その二つの違いを下のテーブルにまとめてみます。
Object | Map | |
---|---|---|
キー | 文字列 | 制約なし |
列挙順 | 曖昧 | 挿入順 |
for...in | 可 | 不可 |
for...of | 不可 | 可 |
MapはObjectと同様にすでに同じキーがある場合は後で設定した値が上書きされる。
Mapの主なメソッド
・new Map()
-> mapコンストラクタからインスタンス化をして、mapオブジェクトを作成
・map.set(key, value)
-> 第一引数にキー、第2引数に値をそれぞれ渡して設定
・map.get(key)
-> キーの値を取得
・map.delete(key)
-> キーの値を削除
・map.size()
-> mapの要素数を取得
・map.has(key)
-> Mapオブジェクト内に対応するvalueがあるかの論理値を返却
SetとArrayの比較
Set
とArray
の大きな違い-> Set
は重複した値を許さない
const mySet = new Set(); //新しいSetインスタンスを作成
// Setに値を追加
mySet.add(1);
mySet.add(5);
mySet.add("Hello");
mySet.add({ a: 1, b: 2 });
// Setの内容をコンソールに表示
console.log(mySet); // Set(4) { 1, 5, 'Hello', { a: 1, b: 2 } }
// 同じ値を追加しても無視される
mySet.add(1);
console.log(mySet); // Set(4) { 1, 5, 'Hello', { a: 1, b: 2 } }
Setの主なメソッド
・new Set()
-> setコンストラクタからインスタンス化をして、setオブジェクトを作成
・set.clear()
-> すべての要素をSet
オブジェクトから取り除く
・set.delete(value)
-> valueの要素を取り除き、要素の削除に成功したか否かの論理値を返す
・set.add(value)
-> Set
オブジェクト内に同じ値を持つ要素が存在しない場合のみ指定した値を持つ要素を挿入
・set.has(value)
-> Set
オブジェクト内にvalueがあるかどうかの論理値を返す
・set.entries()
-> ``Setオブジェクト内の各要素を[value,value]の配列が挿入順で返却
・set.has(value)
-> Set
オブジェクト内にvalueが存在するかの論理値を返却