JavaScript

Set.prototype.forEach()メソッド

 編集:2022.07.29 by T.A.

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

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

undefined です。

解説

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

callback は3つの引数で呼び出されます:

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

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

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

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

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

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

function Job(value1, value2, set) {
  alert('s[' + value1 + '] = ' + value2);
}
new Set(['foo', 'bar', undefined]).forEach(Job);

表示結果:

"s[foo] = foo"

"s[bar] = bar"

"s[undefined] = undefined"


テスト