티스토리 뷰
실무에서 작업 중, 반복된 패턴을 순회하며 [ 기존값에 현재값을 적재(acuumlator)] 하는 상황에서
reduce함수가 생각나서 사용해보았다.
reduce
reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.
리듀서 함수는 네 개의 인자를 가집니다.
- 누산기accumulator (acc)
- 현재 값 (cur)
- 현재 인덱스 (idx)
- 원본 배열 (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"});
결과
'■ 프론트엔드 ■ > JavaScript' 카테고리의 다른 글
compare two JSON have the same properties (0) | 2020.07.24 |
---|---|
Template Literals 에서 조건문 쉽게 사용하기 (0) | 2020.07.14 |
HTML5 + sheet.js 를 이용한 클라이언트 Excel parse (12) | 2020.03.26 |
es6, this and bind (0) | 2020.03.04 |
ES6 Immediately-invoked function expression (0) | 2019.03.14 |
댓글