자바스크립트 고차함수 기본 복습

김영진·2021년 2월 11일
0

Vanilla JavaScript_Basic

목록 보기
3/8
post-thumbnail
  • 두 개의 함수를 입력받아 두 함수가 결합된 새로운 함수를 리턴하라.
function compose2(func1, func2) {
  return function(num) {
    return func1(func2(num));
  }
} // 보편적인 방법

function compose2(func1, func2) {
  const composedFunc = function(num){
    const func2Result = func2(num); //func2의 결과값을 저장
    const func1Result = func1(func2Result); // func2의 결과값을 인자로 한다.
    return func1Result;
  }
  return composedFunc;
}
// 위의 두 함수들은 같은 결과를 리턴한다. B는 조금 더 쉽게 이해할 수 있게 변수를 추가로 더 선언하여 의미를 부여한 것.
  • 삼항연산자를 익혀보자.
function length5AndEven(word) {
  let wordLen = word.length;
  return wordLen > 5 && wordLen % 2 === 0 ? true: false; // 해당 조건이 맞으면? true/false로 반환해라
}
function filteringWords(words) {
  return words.filter(length5AndEven);
}
  • 흔히 하는 실수... 늘 return될 값을 확인하자.
function classicMovies(arr, year) {
  const result = arr.filter(function (movie) {
    return movie.year < year;
  });
  result.map(function (movie) {
    return `${movie.title}, ${movie.year}`;
  });
  return result;
} // filter와 map은 원본 배열을 변형시키지 않기 때문에 위의 경우엔 result가 filter만 적용된 결과가 나온다. result.map()의 결과갑승ㄹ 직접 리턴해야 정답이 된다.
  • reduce 제대로 알기...
function foo1(arr) {
  return arr.reduce(function (acc, cur) {
    acc = acc + cur;
    return acc;
  },1);
}
foo1([1, 2, 3]);
// 초기값 1이 주어졌기 때문에 1 + 1 + 2 + 3이 된다.

//배열을 객체로 만드는...
function foo4(arr) {
  return arr.reduce(function (acc, cur, idx) {
    acc[idx] = cur; //객체의 속성 키를 idx로 주고, 값으로 cur 할당
    return acc;
  },{});
}
foo4([1, 2, 3]); // {"0":1, "1":2, "2":3}; 
profile
UI개발자 in Hivelab

0개의 댓글