JS

자바스크립트 배열 메소드 reduce 기초다지기

Okguri 2022. 5. 26. 17:45

자바스크립트 배열 메소드 reduce

parameter

  • 누산값(prev) : initialValues가 있다면 초기값은 initialValues, 없으면 배열의 첫 번째 값. 초기값이 없을 경우 인덱스 1에서 루프를 싲가한다.
  • 현재값(cur) : 루프를 돌면서 만나는 배열의 각 요소. 현재 요소를 칭함,
  • 현재 인덱스
  • 원본 배열

return

누적 계산의 결과값. 배열/숫자 등 다양한 타입 반환 가능.

초기값과 return 값의 타입을 맞춰야 한다. 예를 들어 초기값이 정수였으면 반환값도 정수.

arr.reduce((prev, cur)=>{
	return ;
},[initialValues])
  • 초기값 주는 것을 권장. 빈 배열 && 초기값 없을 경우 TypeError가 발생한다.
  • 특히 배열의 원소가 객체로 이뤄져 있고, 그 객체 안의 값을 합산하려면 반드시 초기값을 설정해줘야 한다.
const list = [
    {name: 'mike', age:19 },
        {name: 'nancy', age:39 },
        {name: 'ann', age:20 },
]

//초기값 없을 경우

list.reduce((prev, cur)=>{
    if(cur.age>19){
        prev+=cur.age    ;
    }
    return prev;
})

return ---> '[object Object]3920'

//초기값 있을 때
list.reduce((prev, cur)=>{
    if(cur.age>19){
        prev+=cur.age    ;
    }
    return prev;
},0)
return ----> 59

reduce로 할 수 있는 것은 엄청 많다.

  • 배열 속 객체 프로퍼티 값 합산
  • 중첩 배열 펼치기
  • 객체 내 값 인스턴스 개수 세기

참고 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#%EA%B0%9D%EC%B2%B4_%EB%82%B4%EC%9D%98_%EA%B0%92_%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4_%EA%B0%9C%EC%88%98_%EC%84%B8%EA%B8%B0