[dev] reduce 함수 활용하기 - forEach 대체하기

wonsama(71)
Published in
#zzan
Words
76
Reading
1 min
Listen
Play
7y

스팀잇표지_190409.008.jpeg
출처 : https://blog.smartcodehub.com/reduce-function-from-different-view/

reduce 는 array 에 2가지 파라미터(fn:reducer, init-value)를 가지는 함수 입니다. 초기값(init-vale)에서 시작하며, reducer(acc, currentItem, index, fullArray) 함수를 통해 값을 처리할 수 있습니다.

acc : 누적된 값
currentItem : 현재 정보
index : 처리 인덱스
fullArray : 입력받은 초기 전체 배열 값

아래와 같은 배열을 만들고

let data = [
  {name: "Raphel", gender: "male"},
  {name: "Tom", gender: "male"},
  {name: "Jerry", gender: "male"},
  {name: "Dorry", gender: "female"},
  {name: "Suzie", gender: "female"},
  {name: "Dianna", gender: "female"},
  {name: "Prem", gender: "male"},
];

아래와 같은 데이터셋으로 변경하고 싶다면

genderwise : {
"male":[
    {"name":"Raphel","gender":"male"},
    {"name":"Tom","gender":"male"},
    {"name":"Jerry","gender":"male"},
    {"name":"Prem","gender":"male"}
    ],
"female":[
    {"name":"Dorry","gender":"female"},
    {"name":"Suzie","gender":"female"},
    {"name":"Dianna","gender":"female"}
]}

1. forEach 반복문을 활용한 방법

const genderwise = {male: [], female: []};
data.forEach(item => genderwise[item.gender].push(item));

2. reduce 를 활용한 방법

let data = [
  {name: "Raphel", gender: "male"},
  {name: "Tom", gender: "male"},
  {name: "Jerry", gender: "male"},
  {name: "Dorry", gender: "female"},
  {name: "Suzie", gender: "female"},
  {name: "Dianna", gender: "female"},
  {name: "Prem", gender: "male"},
];


let genderwise = data.reduce((acc, currentItem, index, fullArray) => {
    acc[currentItem.gender].push(currentItem);
    return acc;  
}, {male: [], female: []});

맺음말

reduce 를 사용하면 datapipe (데이터 연결기법)을 통해 하나의 라인으로 데이터를 처리하는 것이 가능해 집니다.

[dev] reduce 함수 활용하기 - forEach 대체하기 | Ecency