Map
は ES6 で導入された、キーと値のペア(key-value)を保持するためのオブジェクトです。
従来のオブジェクト {}
よりも、キーの型に柔軟で、順序保証もあるのが特徴です。
// Mapを作成
const map = new Map();
// 値を追加(set)
map.set('name', 'Taro');
map.set('age', 25);
// 値を取得(get)
console.log(map.get('name')); // => 'Taro'
// 要素の存在確認(has)
console.log(map.has('age')); // => true
// 要素を削除(delete)
map.delete('age');
// 要素数(size)
console.log(map.size); // => 1
特徴 | Map |
Object |
---|---|---|
キーの型 | 任意(文字列・数値・オブジェクト・関数など) | 文字列・シンボルのみ |
順序の保証 | あり(挿入順) | 基本的には保証されない |
イテレーションしやすさ | for...of やmap.entries() などで簡単 |
Object.keys() などが必要 |
パフォーマンス | 多くの場合、キー操作が高速 | 小規模データ向き |
const map = new Map([
['language', 'JavaScript'],
['version', 'ES6']
]);
for (const [key, value] of map) {
console.log(`${key}: ${value}`);
}
// 出力:
// language: JavaScript
// version: ES6
const objKey = { id: 1 };
const map = new Map();
map.set(objKey, 'データ');
console.log(map.get(objKey)); // => 'データ'
オブジェクトのキーは参照で一致しなければならない点に注意!
メソッド | 説明 |
---|---|
set(key, value) |
要素を追加 |
get(key) |
キーに対応する値を取得 |
has(key) |
キーの存在確認 |
delete(key) |
キーごと削除 |
clear() |
すべての要素を削除 |
size |
要素数 |
keys() |
キーのイテレータ |
values() |
値のイテレータ |
entries() |
[key, value] の配列のイテレータ |
forEach(cb) |
各要素に対してコールバック実行 |