밤토리
728x90

오늘은 Javascript reduce에 대해서 포스팅 해봅니다.

reduce 메소드는 현업에서도 종종 쓰이며, 알고리즘 꽤 많은 것을 구현할 수 있습니다.

 

 

  • Reduce

reduce에서 첫번째 인자인 누적값(accumulator)과 두번째 인자인 현재값(currentValue)을 가지고 있습니다.

보통 배열의 합을 구하거나, 특정 배열의 중복 제거, 같은 값을 찾을 때 사용할 수 있습니다.

 

 

// 1. 배열의 합
const arr = [1, 7, -8, 5, 2]; //sum = 7

const result = arr.reduce((accu, curr) => {
    //accu : 누산값, curr 현재 누산할 값
    // console.log('[accu] : ', accu, ', [curr] : ', curr, ', [accu + curr] : ', accu + curr);
    return accu + curr;
}, 0); // 누산할 초기값 : 0

// console.log('@result : ', result);
// @결과
// accu :  0  curr :  1
// accu :  1  curr :  7
// accu :  8  curr :  -8
// accu :  0  curr :  5
// accu :  5  curr :  2
// @result :  7

// 2. 임직원 중 나이가 30 이상인 임직원 이름 찾기
const employee = [
    { name : 'kim', age : 28},
    { name : 'park', age : 34},
    { name : 'lee', age : 31},
    { name : 'kwon', age : 29},
    { name : 'kim', age : 41},
];

const empName = employee.reduce((prev, curr) => {
    if(curr.age > 30) {
        prev.push(curr.name);
    }
    return prev;
}, []); // 초기값 : 빈 배열

console.log('@empName : ', empName);
// @empName :  [ 'park', 'lee', 'kim' ]


// 3. 응용 : 같은 성을 가진 임직원 COUNT
const empNameCnt = employee.reduce((prev, curr) => {
    prev[curr.name] = (prev[curr.name] || 0) + 1;
    return prev;
}, []); // 초기값 : 빈 배열


console.log('@empNameCnt : ', empNameCnt);
// @empNameCnt :  [ kim: 2, park: 1, lee: 1, kwon: 1 ]

 

728x90
profile

밤토리

@밤토리아이티

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!