고차함수: reduce 사용법

백아름·2023년 5월 17일
0

프론트엔드

목록 보기
20/80

reduce 메소드의 매개변수는 최대 4개

필수 매개변수: accumulator, currentValue

필수 매개변수 2가지를 하나의 함수로 지정하면 reduce메소드로 직접적인 전달인자에는 하나의 함수만 넣어도 됨.

  • 아래의 예시를 보고 이해하라!
const addAccCur = function (acc, cur) {
  return acc + cur;
};

let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.reduce(addAccCur);
console.log(output); // ->> ?
  • 위의 코드에서는 매개변수 두가지인 acc, cur이 const addAccCur = function(acc, cur)로 함수변수로 지정되어 있음.

위는 초기값을 따로 세팅해주지 않고, 배열 내에서 자동적으로 첫 element가 초기값이 된 경우임.

아래는 초기값을 따로 세팅해줌. 따라서 reduce 전달인자를 둘 다 써준 것.

  • initialValue = 1;
const addAccCur = function (acc, cur) {
  return acc + cur;
};
const initialValue = 1;

let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.reduce(addAccCur, initialValue);
console.log(output); // ->> ?

선택적: Index, array

reduce 메소드의 콜백 함수의 매개변수 순서는 다음과 같습니다:

  1. accumulator (누적값): 이전 콜백 호출에서 반환된 누적값입니다.
  2. currentValue (현재 요소): 처리 중인 현재 요소입니다.
  3. currentIndex (현재 인덱스, 선택적): 처리 중인 현재 요소의 인덱스입니다.
  4. array (원본 배열, 선택적): reduce 메소드가 호출된 배열입니다.
    일반적으로 매개변수 중에서 accumulator와 currentValue는 필수적이며, currentIndex와 array는 선택적입니다. currentIndex와 array는 필요에 따라 사용할 수 있습니다.

reduce 동작방법: reduce 메소드의 매개변수 순서와 콜백함수의 매개변수 순서는 동일함

배열을 객체로

function makeAddressBook(addressBook, user) {
  let firstLetter = user.name[0];

  if(firstLetter in addressBook) {
    addressBook[firstLetter].push(user);
  } else {
    addressBook[firstLetter] = [];
    addressBook[firstLetter].push(user);
  }

  return addressBook;
}

let users = [
  { name: 'Tim', age: 40 },
  { name: 'Satya', age: 30 },
  { name: 'Sundar', age: 50 }
];

users.reduce(makeAddressBook, {});

배열을 문자열로

function joinName(resultStr, user) {
  resultStr = resultStr + user.name + ', ';
  return resultStr;
}

let users = [
  { name: 'Tim', age: 40 },
  { name: 'Satya', age: 30 },
  { name: 'Sundar', age: 50 }
];

users.reduce(joinName, '');
profile
곧 훌륭해질 거에요!

0개의 댓글

관련 채용 정보