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(map1)       ; 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()編集

脚註編集

  1. ^ Map - JavaScript // MDN” (2021年12月8日). 2021年12月26日閲覧。

外部リンク編集