최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

 

실무에서 작업 중, 반복된 패턴을 순회하며 [ 기존값에 현재값을 적재(acuumlator)] 하는 상황에서

 

reduce함수가 생각나서 사용해보았다.

 

reduce

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

 

리듀서 함수는 네 개의 인자를 가집니다.

  1. 누산기accumulator (acc)
  2. 현재 값 (cur)
  3. 현재 인덱스 (idx)
  4. 원본 배열 (src)

리듀서 함수의 반환 값은 누산기(어큐멀레이터)에 할당되고,

 

누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 됩니다.

 

객체를 합칠때는 ... 연산자를 이용해서 합칠수도 있지만 아래와 같이 FIXED_DATA라는 상수의 값(혹은 옵션)이

 

연속해서 추가되는 상황이라면 함수로 빼내어 다음과 같이 사용할 수 있습니다.

//
const FIXED_DATA = {a: "hello", b:"serpiko"};
const JWT_DATA = {special: "thing"};

//
const mixInObject = params => [FIXED_DATA,JWT_DATA, params].reduce(
  (accumulator, currentValue) => accumulator = { ...accumulator, ...currentValue }
);

function myFunction(parameters){
  parameters = mixInObject(parameters);
  document.write( JSON.stringify(parameters, null, 2) );
}

myFunction({c:"i'm", d:"sleepy"});

 

결과

댓글