Map.prototype.forEach()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

試してみましょう

function logMapElements(value, key, map) {
  console.log(`m[${key}] = ${value}`);
}

new Map([
  ["foo", 3],
  ["bar", {}],
  ["baz", undefined],
]).forEach(logMapElements);

// Expected output: "m[foo] = 3"
// Expected output: "m[bar] = [object Object]"
// Expected output: "m[baz] = undefined"

構文

js
// アロー関数
forEach(() => { /* … */ } )
forEach((value) => { /* … */ } )
forEach((value, key) => { /* … */ } )
forEach((value, key, map) => { /* … */ } )

// コールバック関数
forEach(callbackFn)
forEach(callbackFn, thisArg)

// インラインコールバック関数
forEach(function() { /* … */ })
forEach(function(value) { /* … */ })
forEach(function(value, key) { /* … */ })
forEach(function(value, key, map) { /* … */ })
forEach(function(value, key, map) { /* … */ }, thisArg)

引数

callbackFn

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

value 省略可

それぞれの反復処理における値です。

key 省略可

それぞれの反復処理におけるキーです。

map 省略可

反復処理されるマップです。

thisArg 省略可

callbackFn の実行時に this として使用される値です。

返値

undefined です。

解説

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

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

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

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

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

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

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

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

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-map.prototype.foreach

ブラウザーの互換性

関連情報