질문 30 · 실전 면접 답변
map·forEach·reduce는 어떤 의도로 선택하나요?
이렇게 답해 보세요 (핵심 답변)
배열을 순회할 때 각 요소를 1:1로 변환해 같은 길이의 새로운 배열을 만들고 싶다면 map을 선택하고, 반환값 없이 로그 출력이나 외부 상태 변경 같은 부수 효과(side effect)만 실행할 때는 forEach를 선택합니다. 그리고 여러 요소를 순회하며 합계, 그룹화 객체, 단일 요약값처럼 하나의 누적 결과로 줄여 나가고 싶을 때는 reduce를 사용합니다. 특히 reduce를 쓸 때는 빈 배열이 들어와도 안전하게 동작하고 결과 타입이 명확해지도록 두 번째 인자인 초기값(initialValue)을 항상 지정하는 것이 좋습니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 새 배열이 필요 없는데 단순 반복 목적으로 map을 쓰면 불필요한 배열이 생성되고 코드의 의도도 흐려집니다.
- forEach에 async 함수를 넘겨도 각 Promise가 끝나기를 기다려 주지 않으므로, 비동기 순차 실행에는 for...of를, 병렬 대기는 Promise.all과 map을 씁니다.
면접에서 자주 하는 실수
map이나 reduce가 새 배열·결과를 반환하더라도 콜백 내부에서 원소 객체의 프로퍼티를 직접 수정하면 원본 배열의 객체도 함께 바뀝니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 30번을 바탕으로 질문과 답변을 새로 정리했습니다.