Map

Map はキーと値をペアで持つオブジェクトです。ES5 まではオブジェクトで表現していましたが、ES2015 から正式に Map というオブジェクトが追加されました。

オブジェクトでマップを表現する場合、以下のような課題がありました。

  • オブジェクトにはプロトタイプがあるため、意図しないマッピングが生じる危険性がある
  • オブジェクトでは、キーと値のペアがいくつあるのか簡単にわからない
  • オブジェクトでは、キーに文字列かシンボルしか利用できない
const map = new Map();

map.set('a', 1);

const key = {};
map.set(key, 'abc');
console.log(map.get(key));

console.log(map.size);

Set

Set はデータの集合で重複を許しません。ES5 までは Set のようなデータを表現する場合、オブジェクトの値にブール値を用いたりして表現していましたが、ES2015 から正式に Set というオブジェクトが追加されました。

// 本来 Set のデータ構造では値は不要だが、
// オブジェクトでしか表現できないので boolean 値などを値として入れる
const set = {};
set.foo = true;
const set = new Set();
set.add(1);
set.add(2);
set.add(2);
console.log(set.size);

results matching ""

    No results matching ""