2015/11/25

ECMAScript6 ~ MapとSet ~

ECMAScript6 ~ MapとSet ~

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