--- title: Set.prototype.forEach() slug: Web/JavaScript/Reference/Global_Objects/Set/forEach tags: - ECMAScript 2015 - JavaScript - Method - Prototype - Reference - set translation_of: Web/JavaScript/Reference/Global_Objects/Set/forEach ---
forEach()
メソッドは、与えられた関数を Set
オブジェクトの各値に対して一回ずつ、挿入順で実行します。
mySet.forEach(callback[, thisArg])
callback
currentValue
, currentKey
Set
で現在 処理されている要素。 Set
にはキー(key)がないため値(value)が両方に渡されます。set
forEach()
が呼ばれている Set
オブジェクトthisArg
callback
を実行するとき、this
として使用する値です。{{jsxref("undefined")}} です。
forEach()
メソッドは Set
オブジェクトに実際に存在する各値に対して一回、与えられた callback
を実行します。削除された値に対しては呼び出されません。ですが、undefined
の値をもつ要素に対しては実行されます。
callback
は3つの引数で呼び出されます。
Set
オブジェクトSet
オブジェクトにキーはありません。しかし、最初の 2 つの引数は、両方とも {{jsxref("Set")}} に含まれる値です。そのため callback
関数は {{jsxref("Map.foreach", "Map")}} や {{jsxref("Array.forEach","Array")}} の forEach()
メソッドと矛盾がありません。
thisArg
引数が forEach()
に与えられた場合、呼び出されたときに this
値として使用するために callback
に渡されます。さもなければ、this
値として使用するために undefined
値が渡されます。callback
によって最終的に観測可能な this
値は関数から見た this
を決定するための通常のルールに応じて決定されます。
各値は一度だけ訪問されますが、 forEach()
が終了する前に削除・再追加された場合は例外です。 到達する前に削除された値に対しては callback
は実行されません。 forEach()
が終了する前に追加された新規の値は訪問されます。
forEach()
は Set
オブジェクト内の各要素に対して一回 callback
関数を実行します。forEach()
は値を返しません。
次のコードでは、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"
仕様書 |
---|
{{SpecName('ESDraft', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}} |
{{Compat("javascript.builtins.Set.forEach")}}