Set.prototype.forEach()

forEach() メソッドは、与えられた関数を Set オブジェクトの各値に対して一回ずつ、挿入順で実行します。

構文

mySet.forEach(callback[, thisArg])

引数

callback
各要素に対して実行する関数で、 3つの引数を受け付けます。
currentValue, currentKey
Setで現在 処理されている要素。 Set にはキー(key)がないため値(value)が両方に渡されます。
set
forEach() が呼ばれている Set オブジェクト
thisArg
callback を実行するとき、this として使用する値です。

返値

undefined です。

解説

forEach() メソッドは Set オブジェクトに実際に存在する各値に対して一回、与えられた callback を実行します。削除された値に対しては呼び出されません。ですが、undefined の値をもつ要素に対しては実行されます。

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

  • 要素値
  • 要素キー
  • 対象となる Set オブジェクト

Set オブジェクトにキーはありません。しかし、最初の 2 つの引数は、両方とも Set に含まれるです。そのため callback 関数は MapArrayforEach() メソッドと矛盾がありません。

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

各値は一度だけ訪問されますが、 forEach() が終了する前に削除・再追加された場合は例外です。 到達する前に削除された値に対しては callback は実行されません。 forEach() が終了する前に追加された新規の値は訪問されます。

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

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

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

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"

仕様書

仕様書
ECMAScript (ECMA-262)
Set.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

凡例

完全対応  
完全対応

関連情報