자바스크립트로 배열 다루는 거 연습하다가 좀 헷갈려서 질문 올려요. map, filter, reduce 이 세 개를 상황따라 골라 쓰라고 하는데 사실 저는 reduce 하나로 거의 다 처리하고 있거든요.
예를 들어 이런 식으로요.
const nums = [1, 2, 3, 4, 5];
const result = nums.reduce((acc, n) => {
if (n % 2 === 0) acc.push(n * 2);
return acc;
}, []);
짝수만 골라서 두 배 하는 건데 reduce 안에서 조건도 걸고 변형도 하고 다 됩니다. 그래서 솔직히 map이랑 filter를 왜 따로 배워야 하나 싶었어요. 위 코드를 filter().map()으로 바꾸면 배열을 두 번 도니까 오히려 손해 아닌가 하는 생각도 들고요.
근데 코드 리뷰 받을 때 "이건 그냥 filter랑 map으로 쪼개는 게 낫다"는 말을 몇 번 들어서요. 셋을 구분하는 기준이 뭔가요? 성능 때문에 reduce 쓰는 게 맞는 건지, 아니면 가독성 쪽을 더 봐야 하는 건지 감이 안 잡히네요. 다들 실무에서 어떻게 나눠 쓰시는지 궁금합니다.