Map.prototype.forEach()

forEach() メソッドは、指定された関数を Map オブジェクト内にあるキーと値のペアそれぞれに対して1回ずつ、挿入順に実行します。

構文

myMap.forEach(callback([value][, key][, map])[, thisArg])

引数

callback

myMap のそれぞれの項目に対して実行される関数。以下の引数を取ります。

value Optional
それぞれの反復処理における値です。
key Optional
それぞれの反復処理におけるキーです。
map Optional
反復処理されるマップです (上記の構文ボックスでは myMap です)。
thisArg Optional
callback の実行時に this として使用される値です。

返値

undefined です。

解説

forEach メソッドは、指定された関数 callback を、マップの実在するそれぞれのキーに対して一度ずつ呼び出します。これは削除されたキーに対しては呼び出しません。ただし、存在していて undefined である値に対しては呼び出します。

callback は次の 3 つの引数で呼び出されます。

  • 項目の値 (value)
  • 項目のキー (key)
  • 走査中の Map オブジェクト

thisArg 引数が forEach に指定されると、 callback の呼び出し時にそのオブジェクトが this の値として使用されます。与えられなかった場合は、 undefinedthis の値として渡されます。 callback によって究極に管理される this の値は、関数から見える this を特定する一般規則に従います。

それぞれの値に対して一度ずつ実行されますが、 forEach が終了するまでに削除され再追加された場合は除きます。 callback はその前に削除された値に対しては実行されません。 forEach が終了する前に追加された新しい値に対しては実行されます。

Map オブジェクトの内容を表示

以下のコードは Map オブジェクト内の各要素を1行ずつ出力します。

function logMapElements(value, key, map) {
    console.log(`map.get('${key}') = ${value}`)
}
new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(logMapElements)
// logs:
// "map.get('foo') = 3"
// "map.get('bar') = [object Object]"
// "map.get('baz') = undefined"

仕様書

仕様書
ECMAScript (ECMA-262)
Map.prototype.forEach の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
forEachChrome 完全対応 38Edge 完全対応 12Firefox 完全対応 25IE 完全対応 11Opera 完全対応 25Safari 完全対応 8WebView Android 完全対応 38Chrome Android 完全対応 38Firefox Android 完全対応 25Opera Android 完全対応 25Safari iOS 完全対応 8Samsung Internet Android 完全対応 3.0nodejs 完全対応 0.12

凡例

完全対応  
完全対応

関連情報