Set.prototype.forEach()

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

구문

mySet.forEach(callback[, thisArg])

매개변수

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

반환 값

undefined.

설명

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

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

  • 요소 값
  • 요소 키
  • 순회 중인 Set 객체

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

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

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
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Set.prototype.forEach' in that specification.
Standard Initial definition.
ECMAScript (ECMA-262)
The definition of 'Set.prototype.forEach' in that specification.
Living Standard  

브라우저 호환성

BCD tables only load in the browser

같이 보기