JavaScript에서 Set 객체의 values() 메서드는 현재 Set에 저장된 모든 값을 순회할 수 있는 이터레이터(Iterator) 객체를 반환합니다. 반환된 이터레이터 객체는 next() 메서드를 제공하며, next()를 호출할 때마다 Set에 담긴 다음 요소를 하나씩 순서대로 가져올 수 있습니다.
Set은 중복을 허용하지 않는 고유한 값들의 집합을 관리하는 자료구조로, 삽입된 순서대로 요소를 순회한다는 특징이 있습니다. 따라서 values() 메서드로 얻은 이터레이터 역시 요소가 추가된 순서대로 값을 반환합니다.
문법(Syntax)
values() 메서드의 기본 문법은 다음과 같습니다.
setObj.values()
이 메서드는 매개변수를 받지 않으며, Set 객체의 값을 순차적으로 접근할 수 있는 이터레이터 객체를 반환합니다.
예제(Example)
아래 예제에서는 과일 이름 4개를 Set 객체에 추가한 뒤, values() 메서드로 이터레이터를 생성하고 반복문과 next() 메서드를 사용해 각 값을 출력합니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
const setObj = new Set();
setObj.add('Apples');
setObj.add('Oranges');
setObj.add('Bananas');
setObj.add('Grapes');
var valuesObject = setObj.values();
for(i=0; i<setObj.size; i++) {
document.write(valuesObject.next().value);
document.write("<br>");
}
</script>
</body>
</html>실행 결과(Output)
위 코드를 실행하면 Set에 추가된 순서대로 값이 출력됩니다.
Apples Oranges Bananas Grapes
추가로 알아두면 좋은 점
- keys()와의 동일성: Set에는 키(key) 개념이 없기 때문에
setObj.keys()도 values()와 완전히 동일하게 동작합니다. - [Symbol.iterator]: Set 객체의 기본 이터레이터인
setObj[Symbol.iterator]()역시 values() 메서드와 같은 이터레이터를 반환하므로,for...of문으로 바로 순회할 수 있습니다. - next()의 반환값: next() 메서드는
{ value, done }형태의 객체를 반환합니다. value에는 실제 값이 들어 있고, done은 순회가 끝났는지 여부를 나타내는 불리언 값입니다.