javascript - Reduce
// 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`가 어떻게 동작하는지를 보여주고 있으며, 이러한 정보를 활용하여 복잡한 배열 처리 작업을 수행할 수 있습니다.