Mapオブジェクトは連想配列を扱うための機能を組み込んだオブジェクトです{{Cite web
|url=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
|title=Map - JavaScript // MDN
|date=2021/12/08
|accessdate=2021/12/26
。
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()メソッドを使います。
[https://paiza.io/projects/sIET1s8Mhd6YHBGm5js0TQ?language=javascript コード例]:
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
Map.name
Map.prototype
[object]
Mapオブジェクトの要素数。