Set.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()Set インターフェイスのメソッドで、指定された関数をこの集合のそれぞれの値に対して一回ずつ、挿入順で実行します。

試してみましょう

構文

js
forEach(callbackFn)
forEach(callbackFn, thisArg)

引数

callback

この集合のそれぞれの項目に対して実行する関数です。この関数は次の引数で呼び出されます。

value

それぞれの反復処理の値です。

key

それぞれの反復処理のキーです。これは常に value と同じです。

set

反復処理が行われる集合です。

thisArg 省略可

callbackFn を実行するときn、this として使用する値です。

返値

undefined です。

解説

forEach() メソッドは、この Set オブジェクトに実際に存在するそれぞれの値に対して、指定された callback を一回ずつ実行します。削除された値に対しては呼び出しません。ただし、undefined の値をもつ要素に対しては実行します。

callback3 つの引数で呼び出されます。

  • この要素の値
  • この要素のキー
  • 走査を行っている Set オブジェクト

しかし、 Set オブジェクトにキーがないので、最初の 2 つの引数は、両方とも Set に含まれるです。これにより、他の MapArrayforEach() メソッドと整合が取れています。

thisArg 引数が forEach() に渡された場合、 callback を呼び出すときにこれが渡され、 this 値として使用されます。渡されなかった場合は、さもなければ、this 値として使用するために undefined 値が渡されます。 this の値が最終的に callback から見える姿は、関数から見た this を決定するための通常のルールに応じて決まります。

それぞれの値は 1 回ずつ処理されますが、 forEach() が終了する前に削除・再追加された場合は例外です。処理される前に削除された値に対しては callback は実行されません。 forEach() が終了する前に追加された新しい値は処理されます。

forEach()callback 関数を Set オブジェクト内のそれぞれの要素に対して一回ずつ実行します。返値はありません。

Set オブジェクトの内容を出力する

次のコードでは、Set オブジェクト内の各要素に対してログを出力します。

js
function logSetElements(value1, value2, set) {
  console.log(`s[${value1}] = ${value2}`);
}

new Set(["foo", "bar", undefined]).forEach(logSetElements);

// Logs:
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"

仕様書

Specification
ECMAScript Language Specification
# sec-set.prototype.foreach

ブラウザーの互換性

BCD tables only load in the browser

関連情報