5/1 - 내장 고차 함수(filter , map , reduce)

이준민·2023년 5월 1일
0

filter

조건에따라서 걸러진 요소들을 모아 새로운 배열로 만들어줌

const isOdd = function (num) {
  return num % 2 === 1;
};

let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.filter(isOdd);
console.log(output); // [1,3,5,7]

map

map은 이렇게 하나의 데이터를 다른 데이터로 매핑(mapping) 할 때 사용된다.
배열의 모든 요소에 적용됨.

const double = function (num) {
  return num * 2;
};

let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.map(double);
console.log(output); // [2, 4, 6, 8, 10, 12, 14]

reduce

reduce는 이렇게 여러 데이터를, 하나의 데이터로 응축(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); // 28

reduce의 색다른 사용

배열을 문자열로

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

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

let strUser = users.reduce(joinName, ''); // 'Tim, Satya, Sundar, '
strUser = strUser.slice(0,-2); // 'Tim, Satya, Sundar'

배열을 객체로

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, {}); 

//{
//  T: [ { name: 'Tim', age: 40 } ],
//  S: [ { name: 'Satya', age: 30 }, { name: 'Sundar', age: 50 } ]
//}
profile
적응하는 개발자 이준민 입니다.

0개의 댓글