(標準組み込みオブジェクト)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
- Objectのkeyはstring型、Mapは任意の型を指定できる
- Objectのsizeは手動で調べる必要がある。MapはMap.size()
- Objectの反復は順番を保証しない。Mapの反復は要素の挿入順
- Objectはデフォルトでプロパティを持つ(var map = Object.create(null)で回避できる)
- Mapを使うのは、実行時までキーが不明な時、全てのkeyが同じ型の時、全ての値が同じ型の時
- Objectを使うのは、個々の要素に操作できるロジックがある時
// Object:
var o = {};
var o = Object.create(null);
o.key = 1;
o.key += 10;
for(let k in o) o[k]++;
var sum = 0;
if('key' in o);
if(o.hasOwnProperty('key'));
delete(o.key);
Object.keys(o).length
// Map:
var m = new Map();
m.set('key', 1);
m.set('key', m.get('key') + 10);
m.foreach((k, v) => m.set(k, m.get(k) + 1));
for(let k of m.keys()) m.set(k, m.get(k) + 1);
var sum = 0;
for(let v of m.values()) sum += v;
if(m.has('key'));
m.delete('key');
m.size();