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
'Frontend > Javascript' 카테고리의 다른 글
[JS] Optional Chaining 연산자 사용 방법 (0) | 2023.05.13 |
---|---|
[JS] 병합 연산자 (nullish coalescing operator) 사용 방법 (0) | 2023.05.13 |
[JS] 자바스크립트 클로저(Closures)란 ? (0) | 2023.02.13 |
[JS] Array.from 배열 변환 및 연산, 1~N까지 채우기 (0) | 2023.02.10 |
[JS] 이벤트 버블링과 이벤트 캡처란 ? (0) | 2023.02.06 |