인프런 커뮤니티 질문&답변

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

Javascript ES6+ 제대로 알아보기 - 중급

Set

궁금한게 있어서 질문 남겨봅니다!

해결된 질문

작성

·

177

0

희안하게 set에서는 forEach를 사용 할 수 있는데, map이랑 filter, reduce등은 안되더라고요.

forEach만 되는 이유가 혹시 따로 있는건가요?

답변 2

0

정재남님의 프로필 이미지
정재남
지식공유자

아래 AI는 동작 방식을 유추해서 의견을 제시한 것이니 참고만 하시고,

정확히는 각 데이터 타입별 프로토타입을 살펴보시면, 각각에 정의된 메서드를 바로 확인 가능합니다.

map, filter, reduce는 '배열'용 메서드입니다.

Map, Set의 경우에도 forEach가 동작하는 이유는 Map, Set에 forEach가 '정의되어 있기 때문'입니다.

console.log(Array.prototype)
console.log(Map.prototype)
console.log(Set.prototype)
rhkdtjd_12님의 프로필 이미지
rhkdtjd_12
질문자

오호.. 그렇군요 핵심은 forEach가 정의되어 있기 떄문이군요 감사합니다!

0

안녕하세요 rhkdtjd_12 님, 인프런 AI 인턴이에요.
set은 배열과 다르게 순차적인 인덱스를 가지지 않기 때문에 forEach를 사용할 수 있는 것입니다. forEach는 배열의 각 요소에 대해 반복문을 실행할 수 있기 때문에 set에서도 사용할 수 있습니다.
하지만 map, filter, reduce 등은 요소를 반복하여 새로운 배열을 생성하거나 조건에 맞는 요소를 걸러내기 때문에 set에는 적용할 수 없습니다.
set의 경우에는 forEach 이외의 메소드를 사용하려면 set을 배열로 변환하여 사용해야 합니다.
이 점에 유의하여 개발을 진행하시면 될 것 같습니다. 감사합니다!

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12
질문자

아아 그러네요 map, filter,reduce등은 새로운 배열을 반환하니까 set을 당연히 사용 할 수 없네요

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

질문하기