コンテンツにスキップ

JavaScript/Map

出典: フリー教科書『ウィキブックス(Wikibooks)』
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()

[編集]

脚註

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

外部リンク

[編集]