JavaScript/Map
- JavaScript > 標準ライブラリ Map
Mapオブジェクト
編集「連想配列」も参照
Mapオブジェクトは連想配列を扱うための機能を組み込んだオブジェクトです[1]。 JavaScriptには既に、連想配列としてObjectオブジェクトがありますが、ObjectオブジェクトとMapオブジェクトの違いは、
- Objectオブジェクトはプロトタイプをもつが、Mapオブジェクトは(連想配列の中には)プロトタイプは持たない。
- ObjectオブジェクトはキーにStringかSymbolである必要があるが、Mapオブジェクトは任意のオブジェクトやプリミティブをキーにできる。
Mapオブジェクトの生成には、Mapコンストラクターを使います。
const map = new Map()
Mapオブジェクトにはリテラルはありません。
- 注意
- Mapオブジェクトもオブジェクトなので、ドット記法(map.prop)やブラケット記法(map.["prop"])でプロパティにアクセスできますが、それはMapオブジェクトの提供する連想配列ではなく、ただのオブジェクトです。Mapオブジェクトの要素へのアクセスにはset(),get()メソッドを使います。
コード例
編集- コード例
const map1 = new Map() ; console.log(map1) map1.set(1, "abc") ; console.log('map1.set(1, "abc") ; map1 =', map1) map1.set("a", []) ; console.log('map1.set("a", []) ; map1 =', map1) map1.set(1, 123) ; console.log('map1.set(1, 123) ; map1 =', map1) map1.set([1,2,3], "1") ; console.log('map1.set([1,2,3], "1"); map1 =', map1) map1.delete(1) ; console.log('map1.delete(1) ; map1 =', map1) map1.delete(1) ; console.log('map1.delete(1) ; map1 =', map1) map1.set(1, 0) ; console.log('map1.set(1, 0) ; map1 =', map1) console.log(`map1.get(1) = ${map1.get(1)}, map1.get(2) = ${map1.get(2)}`) console.log(`map1.has(1) = ${map1.has(1)}, map1.has(2) = ${map1.has(2)}`) console.log("[...map1] =",[...map1]) console.log("[...map1.keys()] =", [...map1.keys()]) console.log("[...map1.values()] =", [...map1.values()]) console.log("[...map1.entries()] =", [...map1.entries()]) map1.forEach((k,v) => console.log(k,v)) map1.clear() console.log(map1) const a = new Map() const b = new Map() a.set(100, 1) b.set(100, 1) console.log(a == b)
- 実行結果
Map(0) {} map1.set(1, "abc") ; map1 = Map(1) { 1 => 'abc' } map1.set("a", []) ; map1 = Map(2) { 1 => 'abc', 'a' => [] } map1.set(1, 123) ; map1 = Map(2) { 1 => 123, 'a' => [] } map1.set([1,2,3], "1"); map1 = Map(3) { 1 => 123, 'a' => [], [ 1, 2, 3 ] => '1' } map1.delete(1) ; map1 = Map(2) { 'a' => [], [ 1, 2, 3 ] => '1' } map1.delete(1) ; map1 = Map(2) { 'a' => [], [ 1, 2, 3 ] => '1' } map1.set(1, 0) ; map1 = Map(3) { 'a' => [], [ 1, 2, 3 ] => '1', 1 => 0 } map1.get(1) = 0, map1.get(2) = undefined map1.has(1) = true, map1.has(2) = false [...map1] = [ [ 'a', [] ], [ [ 1, 2, 3 ], '1' ], [ 1, 0 ] ] [...map1.keys()] = [ 'a', [ 1, 2, 3 ], 1 ] [...map1.values()] = [ [], '1', 0 ] [...map1.entries()] = [ [ 'a', [] ], [ [ 1, 2, 3 ], '1' ], [ 1, 0 ] ] [] a 1 [ 1, 2, 3 ] 0 1 Map(0) {} false
- 存在しない要素をdeleteしても例外は上がりません。
プロパティ
編集静的プロパティ
編集- Map.length
- 1
- コンストラクタの引数の数
- Map.name
- "Map"
- Map.prototype
- [object]
静的メソッド
編集インスタンスプロパティ
編集Map.prototype.size
編集Mapオブジェクトの要素数。
インスタンスメソッド
編集この節は書きかけです。この節を編集してくれる方を心からお待ちしています。
Map.prototype.clear()
編集Map.prototype.constructor()
編集Map.prototype.delete(item)
編集Map.prototype.entries()
編集Map.prototype.forEach(item)
編集Map.prototype.get(item)
編集Map.prototype.has(item)
編集Map.prototype.keys()
編集Map.prototype.set(item,item)
編集Map.prototype.values()
編集脚註
編集- ^ “Map - JavaScript // MDN” (2021年12月8日). 2021年12月26日閲覧。
外部リンク
編集- “ECMA-262::24.1 Map Objects” (2021年12月17日). 2021年12月26日閲覧。[ ]