先日、ES6のMapを使っての実装をする機会があったので、改めてMapとSetを学んでみようと思います。
Map
他のプログラミング言語では通常サポートされているようなのですが、Javascriptでは初めて。データを格納するためのデータ構造です。
// Mapの生成
let map = new Map();
// 値の設定
map.set('key1', 'value1');
// 値の取得
let key = map.get('key1'); // 'value1'
// 格納したデータ数
map.size; // 1
// 存在確認
map.has('key1'); // true
// データの削除
map.delete('key1');
map.clear(); // 全削除
// keyを取得
let keys = map.keys(); // => MapIteratorが取得できる
// valueを取得
let values = map.values(); // => MapIteratorが取得できる
for (var key of keys) {
console.log(key);
}
// 値の取得(forEach)
map.forEach(function (value, key, map) {
console.debug(value, key, map);
});
objectでデータを格納するよりも、map.keys()やmap.has()にて取得ができるので、使いやすいかと思います。
Set
Setのインスタンスには同一の値は追加できません。
// 初期化
let set = new Set();
// 値の追加
set.add('val1');
// 値の存在確認
set.has('val1'); // true
// 値の削除
set.delete('val1');
// 格納してあるデータ数
set.size; // => 1
// 値の取得(values)
set.values()
// 値の取得(entities)
set.entries()
// 値の取得(forEach)
set.forEach(function (val1, val2, set) {
console.debug(value1, value2, set);
});
オブジェクトを操作をする際には、MapやSetを使って、うまく値を格納できるようになりたいと思います。