Set.forEach() 함수란?
Set 객체의 forEach() 함수는 특정 함수의 이름을 인수로 받아, 현재 집합(Set)에 저장된 모든 값에 대해 해당 함수를 반복 실행합니다.
예를 들어, 값을 출력하는 기능을 하는 함수를 미리 작성해 두었다면, forEach() 함수에 이 함수를 전달하는 것만으로 집합 내 모든 요소의 값이 자동으로 출력됩니다. 별도의 반복문(for 루프 등)을 직접 작성할 필요 없이 간결하게 순회 처리가 가능하다는 것이 큰 장점입니다.
문법(Syntax)
forEach() 함수의 기본 문법은 다음과 같습니다.
setObj.forEach(callback)
콜백 함수의 매개변수
forEach()에 전달되는 콜백 함수는 실행 시 다음 세 가지 인수를 전달받습니다.
- value: 현재 순회 중인 요소의 값
- key: Set에서는 key가 value와 동일한 값으로 전달됩니다
- setObj: 현재 순회 중인 Set 객체 자신
예제 코드
아래 예제에서는 두 가지 방식으로 forEach()를 활용합니다. 첫 번째는 문자열 요소를 하나씩 출력하는 것이고, 두 번째는 숫자 요소들의 합계를 구하는 것입니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
// 각 값을 출력하는 함수
function sampleFunction(value){
document.writeln(value+",");
}
const setObj1 = new Set();
setObj1.add('Java');
setObj1.add('JavaFX');
setObj1.add('JavaScript');
setObj1.add('HBase');
setObj1.forEach(sampleFunction);
document.write("<br>");
// 합계를 계산하는 함수
var sum = 0;
function mathExample(value) {
sum = value+sum;
}
const setObj2 = new Set();
setObj2.add(172);
setObj2.add(364);
setObj2.add(885);
setObj2.add(746);
setObj2.forEach(mathExample);
document.write("Sum of all elements in the set: "+sum);
</script>
</body>
</html>실행 결과
Java, JavaFX, JavaScript, HBase, Sum of all elements in the set: 2167
결과 해설
첫 번째 Set(setObj1)에는 네 개의 문자열이 저장되어 있으며, forEach()가 sampleFunction을 각 요소마다 호출하면서 값들이 쉼표와 함께 순서대로 출력됩니다.
두 번째 Set(setObj2)에는 172, 364, 885, 746의 네 개 숫자가 저장되어 있습니다. mathExample 함수가 각 요소를 순회하며 합산하기 때문에 최종적으로 172 + 364 + 885 + 746 = 2167이라는 결과가 화면에 표시됩니다.
이처럼 forEach() 함수를 활용하면 Set의 모든 요소를 손쉽게 순회하며 출력, 누적 계산 등 다양한 작업을 수행할 수 있습니다.