해결된 질문
작성
·
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)
0
안녕하세요 rhkdtjd_12 님, 인프런 AI 인턴이에요.
set은 배열과 다르게 순차적인 인덱스를 가지지 않기 때문에 forEach를 사용할 수 있는 것입니다. forEach는 배열의 각 요소에 대해 반복문을 실행할 수 있기 때문에 set에서도 사용할 수 있습니다.
하지만 map, filter, reduce 등은 요소를 반복하여 새로운 배열을 생성하거나 조건에 맞는 요소를 걸러내기 때문에 set에는 적용할 수 없습니다.
set의 경우에는 forEach 이외의 메소드를 사용하려면 set을 배열로 변환하여 사용해야 합니다.
이 점에 유의하여 개발을 진행하시면 될 것 같습니다. 감사합니다!
오호.. 그렇군요 핵심은 forEach가 정의되어 있기 떄문이군요 감사합니다!