Set.prototype.forEach()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Set 인스턴스의 forEach() 메서드는 제공된 함수를 Set 요소 각각에 대해 삽입 순서대로 한 번씩 실행합니다.

시도해보기

구문

js
forEach(callbackFn)
forEach(callbackFn, thisArg)

매개변수

callback

각 요소에 대해 실행할 함수. 다음 세 가지 인수를 받습니다.

value

각 순회의 값

key

각 순회의 키. 이것은 언제나 value와 같습니다/

set

순회 중인 Set.

thisArg Optional

callbackFn을 실행 중일 때 this값으로 사용할 값.

반환 값

없음 (undefined).

설명

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

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

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

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

thisArg 매개변수를 forEach()에 제공한 경우 callback을 호출할 때 전달해 this의 값으로 쓰입니다. 전달하지 않으면 undefined 값이 넘어가 this의 값으로 사용됩니다. 궁국적으로 callback이 관찰할 수 있는 this 값은 함수의 this를 결정하는 일반적인 규칙에 따라 결정됩니다.

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

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

예제

Set의 내용물 기록하기

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

js
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
ECMAScript Language Specification
# sec-set.prototype.foreach

브라우저 호환성

BCD tables only load in the browser

같이 보기