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.

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

시도해보기

구문

js
mySet.forEach(callback[, thisArg])

매개변수

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

반환 값

설명

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

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

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

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

thisArg 매개변수를 forEach()에 제공한 경우 callback을 호출할 때 전달해 this의 값으로 쓰입니다. 전달하지 않으면 undefined를 사용하며, 최종 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

같이 보기