[JS] Array.reduce()

2022. 5. 2. 17:37

1. reduce() 메소드

arr.reduce(callback[, initialValue])
  • callback : 배열의 각 요소에 대해 실행할 함수로 4가지 인수를 가짐
    • accumulator : 누산기. 콜백의 반환값을 누적. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값
    • currentValue : 처리할 현재 요소
    • currentIndex (Optional) : 처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작
    • array (Optional) : reduce()를 호출한 배열
  • initialValue (Optional) : callback의 최초 호출에서 첫 번째 인수에 제공하는 값. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용. 빈 배열에서 초기값 없이 reduce()를 호출하면 오류 발생

 

2. 사용법

: 배열의 각 요소에 대해 함수를 실행하고 누적된 값을 출력할 때 용이

2.1 모든 배열의 합 구하기

const arr = [1, 2, 3, 4, 5];
const result = arr.reduce((acc, cur, idx) => { return acc += cur; }, 0);
console.log(result);  // 15

const result2 = arr.reduce((acc, cur, idx) => { return acc += cur; }, 10);
console.log(result2);  // 25

 

2.2 배열에서 음수와 양수의 개수 세기

const numbers = [2, -5, -123, 59, -5480, 24, 0, -69, 349, 3];
const result = numbers.reduce((acc, cur, idx) => { 
  if(cur < 0){
    // 처리할 현재 요소가 음수일 경우
    acc[0]++;
  }
  else if(cur > 0){
    // 처리할 현재 요소가 양수일 경우
    acc[1]++;
  }
  return acc;
 }, [0,0]);	// initialValue가 배열
console.log(result);  // [4, 5]

 

2.3 객체 배열에서 최댓값 구하기

// 가장 큰 x 프로퍼티를 가지는 객체 구하기
max = arr.reduce((acc, cur) => {
            return (acc.x > cur.x) ? acc : cur;
        });

 

 

 

 

참고 : https://miiingo.tistory.com/365

'JavaScript' 카테고리의 다른 글

[JS] 배열의 특정 값 찾기 - Array.find(), Array.filter()  (0) 2022.05.03
[JS] Object  (0) 2022.05.02
[JS] Array.Map  (0) 2022.05.02
[JS] 숫자, 문자열 정렬 - Array.sort()  (0) 2022.04.23
[JS] 화살표 함수, 짧은 함수  (0) 2022.04.19

+ Recent posts