reduce 메서드
reduce 메서드는 배열을 하나의 값으로 축소합니다(리듀스). 예를 들어,
이 메서드를 사용하면 배열 요소의 합을 쉽게 찾을 수 있습니다(즉, 배열이 요소의 합이라는 하나의 값으로 축소됩니다).
reduce 메서드는 첫 번째 매개변수로 함수를 받으며, 이 함수는 첫 번째 요소부터 시작하여 배열의 각 요소에 대해 순차적으로 실행됩니다.
이 함수에는 4개의 매개변수를 전달할 수 있습니다. 이러한 매개변수가 존재하는 경우(필수는 아님),
첫 번째 매개변수에는 자동으로 중간 결과가, 두 번째 매개변수에는 배열 요소가, 세 번째 매개변수에는 배열 내 인덱스가,
네 번째 매개변수에는 배열 자체가 전달됩니다.
중간 결과는 reduce 메서드가 배열의 모든 요소를 순회한 후 반환할 값을 누적하는 변수입니다.
예를 들어, 배열 요소의 합을 순차적으로 누적할 수 있습니다: 처음에는 첫 번째 요소를 넣고,
다음 루프에서는 첫 번째와 두 번째 요소의 합을, 그 다음에는 첫 번째, 두 번째, 세 번째 요소의 합을 넣는 식입니다.
이 과정은 배열이 끝날 때까지 계속됩니다.
reduce가 받는 함수는 새로운 중간 결과 값을 반환해야 합니다.
reduce 메서드의 두 번째 매개변수는 중간 결과의 초기값을 지정합니다.
지정하지 않으면 초기값은 배열의 첫 번째 요소가 되며, 요소 처리는 두 번째 요소부터 시작됩니다.
구문
배열.reduce(function(중간결과, 요소, 인덱스, 배열) {
return 새로운 중간결과;
}, 초기값);
예제
배열 요소의 합을 구해봅시다:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
코드 실행 결과:
21
예제
배열의 모든 양수의 합을 구해봅시다:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
}, 0);
console.log(res);
코드 실행 결과:
10