JavaScript의 다양한 사용 예시에 대한 Array.prototype.reduce

Photo of author

By tutor

안녕하세요! 오늘은 JavaScript의 Array.prototype.reduce 메소드에 대해 살펴보고자 합니다. 이 메소드는 배열의 각 요소에 특정 함수를 적용하여 하나의 결과값을 반환합니다. 배열을 순환하며 각 요소를 하나씩 처리하는 데에 있어 매우 유용한 기능을 제공해줍니다.

let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15

위의 코드 예시는 배열 ‘numbers’에 reduce 메소드를 적용하여 모든 요소를 더한 뒤 결과값을 ‘sum’ 변수에 저장하는 간단한 예시입니다. ‘reduce’ 메소드는 첫 번째 인자로 전달된 함수에 대해 두 번째 인자부터 시작하여 첫 번째 요소에 적용하고, 그 결과를 누적값으로 사용합니다. 위의 코드에서는 초기값을 0으로 설정하였으며, 각 요소를 더하여 누적값을 계산하고 있습니다.

기능 설명

Array.prototype.reduce의 주요 기능은 다음과 같습니다:

1. 누적값 계산

reduce 메소드는 누적값을 계산하여 반환하는 기능을 제공합니다. 위 예시에서는 각 요소를 더하여 누적값을 계산하고 있습니다. 이와 같은 방식으로 배열의 모든 요소를 합산하거나 곱한 결과값을 구할 수 있습니다.

let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
let product = numbers.reduce((acc, curr) => acc * curr, 1);
console.log(sum);    // 15
console.log(product); // 120

2. 요소 필터링

reduce 메소드의 콜백 함수에서 특정 조건을 만족하는 요소만 누적값에 추가하여 원하는 결과를 얻을 수 있습니다. 예를 들어, 배열에서 짝수 요소의 합을 구하려면 다음과 같이 reduce 메소드를 사용할 수 있습니다.

let numbers = [1, 2, 3, 4, 5];
let sumOfEvens = numbers.reduce((acc, curr) => {
  if (curr % 2 === 0) {
    return acc + curr;
  }
  return acc;
}, 0);
console.log(sumOfEvens); // 6

FAQ

Q: reduce 메소드의 초기값을 설정하지 않으면 어떻게 될까요?

A: 초기값을 설정하지 않으면 배열의 첫 번째 요소가 누적값의 초기값으로 사용됩니다. 만약 배열이 비어있을 경우, TypeError가 발생합니다.

Q: reduce 메소드를 사용할 때 주의해야 할 점은 무엇인가요?

A: reduce 메소드의 콜백 함수는 첫 번째 인자로 누적값(acc)과 현재 요소(curr)를 받습니다. 콜백 함수에서는 반드시 누적값을 반환해야 합니다. 반환된 누적값은 다음 요소에 대해 다시 콜백 함수에 전달됩니다. 또한, reduce 메소드의 인자로 전달된 콜백 함수의 첫 번째 인자의 타입(누적값의 타입)과 반환값의 타입은 일관성 있게 유지해야 합니다.

Q: reduce 메소드를 사용하는 다른 예시는 어떤 것이 있나요?

A: reduce 메소드는 배열 요소의 평균, 최대값 또는 최소값을 구하는 등 다양한 사용 예시를 가지고 있습니다. 예를 들어, 다음과 같이 배열의 최대값을 구하는 코드를 작성할 수 있습니다.

let numbers = [10, 50, 30, 20, 40];
let max = numbers.reduce((acc, curr) => Math.max(acc, curr));
console.log(max); // 50

정리와 설명

Array.prototype.reduce 메소드는 배열의 각 요소를 순환하며 특정 함수를 적용하여 하나의 결과값을 반환하는 기능을 제공합니다. 가독성 좋은 코드 작성과 유지 보수성을 높이기 위해 reduce 메소드를 적재적소에서 잘 활용할 수 있으면 큰 장점이 됩니다. 위의 예시와 함께 응용 가능한 다양한 상황을 생각해보며 reduce 메소드의 활용법을 익힐 것을 권장합니다.

Leave a Comment