JavaScript
JS 메서드 reduce
한우종
2024. 7. 25. 18:06
reduce
- reduce 란?
배열의 각 요소에 대해 주어진 함수를 실행하여 하나의 결과 값을 반환하는 메서드다.
이 메서드는 배열의 모든 요소를 누적(accumulate) 하여 단일 값 으로 줄이는데 사용된다.
reduce 메서드는 두개의 인자를 받는데
콜백함수 와 초기값(optional) 을 받는다.
- 콜백함수는 다음과 같은 네 개의 인자를 가질 수 있다.
- 누산기 accumulator
이전 함수 호출의 반환 값을 저장한다. - 현재 값 currentValue
배열의 현재 요소 - 현재 인덱스 currentIndex
배열의 현재 요소의 인덱스 . (optional) - 원본 배열(array)
`reduce`가 호출된 배열 . (optional)
- 기본구조
array.reduce(callback(accumulator , currentValue , [currentIndex,[array]]),[initialValue])
- 예시
- 배열 요소의 합을 구하는 예시
const arr = [1,2,3,4,5]
const sum = arr.reduce((acc,cur)=> acc + cur,0) // 초기값 0 으로 설정
console.log(sum) // 출력:15
- 배열 요소의 곱을 구하는 예시
const arr = [1,2,3,4,5]
const product = arr.reduce((acc,cur)=> acc*cur,1) // 초기값 1 으로 설정
console.log(product) // 출력:120 1(초기값)*1*2*3*4*5
// 여기서 콜백 함수는 `acc*cur` 을 반환하여 배열의 각 요소를 곱한다.
- 객체 배열에서 특정 속성값의 합을 구하는 예시
const items = [
{ name:'sword',price:200 },
{ name:'wand', price:150 },
{ name:'bat' , price:100 },
]
const total = items.reduce((acc,item) => acc + item.price ,0)
console.log(total) // 출력:450
//여기서 콜백 함수는 `acc+item.price`를 반환하여 배열의 각 객체의 price 값을 더한다.초기값은 0
- 주의점
- reduce 는 원본 배열을 변경하지 않는다.
- 초기값은 누산기의 초기값이다. 초기값이 주어지지 않는다면 배열의 첫번째 요소가 초기값이된다.
- 콜백 함수는 첫번째 요소에 대해 두번째 요소와 함께 호출된다.
초기값을 입력하지 않으면 첫번째 요소가 누산기로 사용되고 두번째 요소부터 순회가 시작된다.
초기값을 제공하면 첫번째 요소와 함께 시작된다.