--- 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])
callbackcurrentValue, currentKeySetで現在 処理されている要素。 Set にはキー(key)がないため値(value)が両方に渡されます。setforEach() が呼ばれている Set オブジェクトthisArgcallback を実行するとき、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")}}