카테고리 없음

javascript - Reduce

jaeha_lee 2023. 9. 10. 09:42

 

// reduce 사용법
array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// sum은 15가 됩니다.

/*
	accumulator는 합산의 결과가 들어가게 되고, 뒤에 "0" 반드시 초기 값이 들어가야 한다.
*/

// 응용해서 배열에서 홀수 합만 구하기
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const sumOfOddIndexes = numbers.reduce((accumulator, currentValue, index) => {
  // 홀수 인덱스인 경우 누적값에 현재 요소를 더합니다.
  if (index % 2 !== 0) {
    return accumulator + currentValue;
  }
  return accumulator;
}, 0);

console.log(sumOfOddIndexes); // 결과 출력: 25 (1 + 3 + 5 + 7 + 9)

`reduce()` 메서드의 콜백 함수에서 사용되는 `currentValue`, `index`, `array` 매개변수에 대한 설명을 더 자세히 제공하겠습니다.

1. `currentValue`:
   - `currentValue`는 배열의 현재 처리 중인 요소의 값을 나타냅니다.
   - `reduce()` 메서드가 각 요소를 순회하면서 콜백 함수를 호출할 때, 현재 요소의 값이 이 매개변수로 전달됩니다.

2. `index` (선택 사항):
   - `index`는 현재 처리 중인 요소의 인덱스를 나타냅니다.
   - `reduce()` 메서드가 각 요소를 순회하면서 콜백 함수를 호출할 때, 현재 요소의 인덱스가 이 매개변수로 전달됩니다.
   - 이 매개변수는 선택 사항이므로 사용하지 않을 수 있습니다.

3. `array` (선택 사항):
   - `array`는 `reduce()` 메서드를 호출한 원래 배열을 나타냅니다.
   - 이 매개변수 역시 선택 사항이며, 사용하지 않을 수 있습니다.
   - 주로 다른 배열 메서드와 연계하여 활용될 때 유용합니다.

이러한 매개변수들은 `reduce()` 메서드를 더 유연하게 사용하고 배열 요소를 처리하는 데 도움을 줍니다. 다음은 `reduce()` 메서드의 간단한 예제를 통해 `currentValue`, `index`, `array`의 사용을 보여줍니다:

```javascript
const numbers = [1, 2, 3, 4, 5];
const result = numbers.reduce((accumulator, currentValue, index, array) => {
  console.log(`현재 요소: ${currentValue}`);
  console.log(`현재 인덱스: ${index}`);
  console.log(`원래 배열: ${array}`);
  return accumulator + currentValue;
}, 0);
```

위 예제에서는 `currentValue`, `index`, `array`가 어떻게 동작하는지를 보여주고 있으며, 이러한 정보를 활용하여 복잡한 배열 처리 작업을 수행할 수 있습니다.