[JavaScript] 배열 메서드 - reduce

Baoro·2022년 7월 21일
0

JavaScript 기본개념

목록 보기
8/9
post-thumbnail
arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];

이라는 배열이 있다고 하자.
이 배열의 누적합을 구하려면 어떻게 해야할까?
내가 처음으로 생각했던 아래 2개의 방법이였다.

let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
let sum = 0;
for(let i=0; i<arr.length; i++){
  sum = sum + arr[i];
}
arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
let sum = 0;
arr.forEach((num) => {
  sum =+ num;
});

물론 이 방법도 맞는 방법이긴 하다.
하지만 이번에는 reduce라는 메서드를 사용해보려고 한다.


reduce란?

reduce() 메서드는 배열의 각 요소에 대해 주어진 reducer함수를 실행하고, 하나의 결과값을 반환한다.

구문

인자

  • callback : 배열의 각 요소에 대해 실행할 함수.
    • accumulator : 누산기. 콜백함수의 반환값을 누적한다.
    • currentvalue : 처리할 현재 요소
    • currentIndex (Optional) : 처리할 현재 요소의 인덱스
    • array (Optional) : reduce()를 호출한 배열
  • initialValue (Optional) : callback의 최초 호출에서 첫번쨰 인수에 제공하는 값

(누적 계산값, 현재값) => { return 계산값 };


예제 1 - 배열 내 모든 수 합치기

let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
let sum = arr.reduce((prev, cur) => {
	return prev + cur;	// 140
}, 0)

reduce는 함수를 받는데 이전값과 현재값을 받는다. 여기서 이전값은 현재까지 누적된 계산값이다. 초기값은 0이다.

예제 2 - 19살 이상인 사람명단 뽑아내기

let userList = [
  {name: "Mike", age: 30},
  {name: "Tom", age: 10},
  {name: "Jane", age: 27},
  {name: "Sue", age: 26},
  {name: "Harry", age: 42},
  {name: "Steve", age: 60},
];

let result = userList.reduce((prev,cur)=>{
  if(cur.age > 19){
    prev.push(cur.name);
  }
  return prev;
},[]);

console.log(result); // [ 'Mike', 'Jane', 'Sue', 'Harry', 'Steve' ]

예제 3 - 나이 합 구하기

let userList = [
  {name: "Mike", age: 30},
  {name: "Tom", age: 10},
  {name: "Jane", age: 27},
  {name: "Sue", age: 26},
  {name: "Harry", age: 42},
  {name: "Steve", age: 60},
];

let result = userList.reduce((prev,cur)=> {
  return (prev += cur.age)
},0);

console.log(result);	// 195
profile
꾸준히.... 깔끔하게.... 끝까지....

0개의 댓글