先日、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を使って、うまく値を格納できるようになりたいと思います。