
배열 메서드를 사용하다 보면 가장 흔히 발생하는 실수 중 하나가 map과 forEach를 구분하지 못하거나, 한 가지만 고집하여 사용하는 경우다. 이 두 메서드의 차이점과 올바른 사용법을 알아보자
const prices = ['1000', '2000', '3000'];
// forEach 사용
const newPricesForEach = prices.forEach((price) => price + '원');
// map 사용
const newPricesMap = prices.map((price) => price + '원');
console.log(newPricesForEach); // undefined
console.log(newPricesMap); // ['1000원', '2000원', '3000원'];
주요 차이점
map: 새로운 배열 반환forEach: undefined를 반환 (반환값 없음)map: 배열의 각 요소를 변환하여 새로운 배열 생성forEach: 단순히 배열을 순회하면서 작업 수행const prices = ['1000', '2000', '3000'];
// forEach로 출력
prices.forEach((price) => console.log(price + '원'));
// map으로 출력
prices.map((price) => console.log(price + '원'));
둘 다 같은 결과를 보여주지만, map을 이런 식으로 사용하는 것은 적절하지 않다.
왜? 🧐
map: 새로운 배열을 만들기 위한 메서드forEach: 각 요소에 대해 함수를 실행하기 위한 메서드map은 새로운 배열을 만들기 때문에 메모리를 더 사용forEach가 더 효율적// 배열의 모든 요소를 변환할 때
const prices = ['1000', '2000', '3000'];
const pricesWithWon = prices.map(price => price + '원');
// 단순히 출력하거나 다른 작업을 수행할 때
prices.forEach(price => console.log(price));
// DOM 조작
elements.forEach(el => el.classList.add('active'));
// 외부 변수 수정
let total = 0;
prices.forEach(price => total += Number(price));
map은 새로운 배열이 필요할 때 사용forEach는 단순 순회나 부수 효과가 필요할 때 사용이렇게 각 메서드의 특성을 이해하고 올바르게 사용하면, 더 깔끔하고 효율적인 코드를 작성할 수 있다.