ObjectとMapの違い

(標準組み込みオブジェクト)
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();
inserted by FC2 system