Set.prototype.forEach()

Метод forEach() выполняет функцию по одному разу для каждого элемента из Set в порядке их расположения.

Синтаксис

mySet.forEach(callback[, thisArg])

Параметры

callback
Функция, которая будет выполнена для каждого элемента, принимает три параметра:
currentValue, currentKey
Текущий элемент из Set. Т.к. в Set нет ключей,  в каждом будет лежать value.
set
Сам объект Set для которого был вызван forEach().
thisArg
Значение, используемое как this в ходе выполнения callback.

Возвращаемое значение

undefined.

Описание

Метод forEach() выполняет callback по одному разу для каждого значения, которое находится в объекте Set. Функция не будет выполняться для значений, которые были удалены. Тем не менее функция выполнится с элементами, значение которых undefined.

callback вызывается с тремя аргументами:

  • значение элемента
  • ключ элемента
  • Set объект обхода

В объектах типа Set нет ключей, поэтому оба первых аргумента принимают значение содержащееся в  Set. Это делает метод  forEach() для объекта Set совместимым с методами forEach() других объектов, таких как Map и Array.

Если аргумент thisArg был передан в forEach(), то он будет передан в  callback , во время исполнения, для использование его в качестве this.  Иначе в this будет хранится значение undefined.  Значение this используемое в  callback определено согласно с обычными правилами определения  this используемого функцией 

Каждое значение используется только один раз, исключая те случаи, когда оно было удалено и передобавлено до того, как forEach() завершился. callback не будет выполнена для элементов, которые были удалены до их использования. Новые значения, которые были добавлены до того как forEach() завершился будут использованы.

forEach() выполняет callback однажды для каждого элемента из объекта Set; Он не возвращает никакого значения.

Примеры

Содержимое объекта 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"

Спецификации

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Set.prototype.forEach' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение 'Set.prototype.forEach' в этой спецификации.
Черновик

Совместимость в браузерах

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung 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

Легенда

Полная поддержка  
Полная поддержка

См. также