--- 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 ---
{{JSRef}}

forEach() 메서드는 주어진 함수를 Set 요소 각각에 대해 삽입 순서대로 실행합니다.

{{EmbedInteractiveExample("pages/js/set-prototype-foreach.html")}}

구문

mySet.forEach(callback[, thisArg])

매개변수

callback
각 요소에 대해 실행할 함수. 다음 세 가지 인수를 받습니다.
currentValue, currentKey
처리할 현재 요소. Set은 키를 갖지 않으므로 두 인수 모두에 값을 전달합니다.
set
forEach()를 호출한 Set.
thisArg
callback을 실행할 때 this로 사용할 값.

반환 값

{{jsxref("undefined")}}.

설명

forEach() 메서드는 주어진 callbackSet에 존재하는 요소에 대해 한 번씩 실행합니다. 삭제한 값에 대해선 실행하지 않습니다. 그러나 존재하되 값이 {{jsxref("undefined")}}인 경우엔 실행합니다.

callback은 다음 세 인수와 함께 호출됩니다.

그러나 Set은 키 값을 사용하지 않으므로, 처음 두 개의 매개변수 모두 요소 값을 받습니다. 이는 {{jsxref("Map.foreach", "Map")}}과 {{jsxref("Array.forEach","Array")}}에서 사용하는 forEach()와 동일한 형태를 유지하기 위해서입니다.

thisArg 매개변수를 forEach()에 제공한 경우 callback을 호출할 때 전달해 this의 값으로 쓰입니다. 전달하지 않으면 undefined를 사용하며, 최종 this 값은 {{jsxref("Operators/this", "함수의 this를 결정하는 평소 규칙", "", 0)}}을 따릅니다.

forEach()는 각각의 값을 한 번씩 방문하지만, 순회를 끝내기 전에 제거하고 다시 추가한 값은 예외입니다. 방문하기 전 제거한 값에 대해서는 callback을 호출하지 않습니다. forEach()가 끝나기 전 추가한 요소는 방문합니다.

forEach()Set 객체의 요소에 대해 callback을 실행만 하며 값을 반환하지는 않습니다.

예제

Set의 내용물 기록하기

다음 코드는 Set의 요소 각각을 새로운 줄에 기록합니다.

function logSetElements(value1, value2, set) {
    console.log('s[' + value1 + '] = ' + value2);
}

new Set(['foo', 'bar', undefined]).forEach(logSetElements);

// 콘솔 로그:
// "s[foo] = foo"
// "s[bar] = bar"
// "s[undefined] = undefined"

명세

Specification Status Comment
{{SpecName('ES2015', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}} {{Spec2('ES2015')}} Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}} {{Spec2('ESDraft')}}  

브라우저 호환성

{{Compat("javascript.builtins.Set.forEach")}}

같이 보기