본문 바로가기

Programming Language/JavaScript

[JS]Function관련 문법

Q1.

'Hello HoF!' 리턴하는 함수를 리턴해야 합니다.

function returnFunction() {
  return function hello() {return 'Hello HoF!'}
}

Q2.

함수와 수(num)를 입력받아 num에 함수를 적용(apply)한 결과를 리턴해야 합니다.

function functionParameter(func, num) {
  return func(num)
}

Q3.

두 개의 함수와 수(num)를 입력받아 num에 함수들을 num에 가까운 순서대로 적용한 결과를 리턴해야 합니다.

function compose(func1, func2, num) {
  return func1(func2(num))
}

Q4.

두 개의 함수를 입력받아 두 함수가 결합된 새로운 함수를 리턴해야 합니다.

function compose2(func1, func2) {
 	return function func3(int){
    	return func1(func2(int))
  }
}

Q5.

함수들을 입력받아 함수들이 입력된 차례대로 결합된 새로운 함수를 리턴해야 합니다.

function pipe(...funcs) {
  return function (num) {
    let result = num;
    for (let i = 0; i < funcs.length; i++) {
      result = funcs[i](result);
    }
    return result;
  };
}

함수를 입력받아 함수를 리턴하는 함수이므로 해당 구조를 처음 접하지만 이해는 된다. 그러나 pipe의 인수 ...funcs는 ...arguments로 대체한다면 에러가 났다. 물론 함수를 입력받아서 funcs이라고 지어준 것은 알겠는데, 왜 arguments는 안될까?

함수 내에서 arguments[index]를 통해 원하는 인자에 접근할 수 있음을 배웠다.

Q6.

배열과 임의의 값(discarder)을 입력받아 기존 배열에서 discarder와 일치하는 요소가 제거된 새로운 배열을 리턴해야 합니다.

function removeElement(arr, discarder) {
  if (arr === []){return []}
  let result = arr.filter(word => word !== discarder)
  return result
}

Q7.

배열과 임의의 값(keeper)을 입력받아 기존 배열에서 keeper와 일치하는 요소만을 갖는 새로운 배열을 리턴해야 합니다.

function keep(arr, keeper) {
  if (arr === []){return []}
  let result = arr.filter(word => word === keeper)
  return result
}

Q8.

문자열을 요소로 갖는 배열을 입력받아 그 길이가 홀수인 요소만을 갖는 배열을 리턴해야 합니다.

function filterOddLengthWords(words) {
  if (words === []){return []}
  let result = words.filter(word => word.length % 2 !== 0)
  return result
}

filter와 관련된 세 문제를 풀면서 (word => 조건) 의미를 알았다. 조건에 만족하는 word라는 것이다.

filter의 인자에는 if 조건문도 들어갈 수 있다.

'Programming Language > JavaScript' 카테고리의 다른 글

[JS]재귀함수 예제  (0) 2022.05.11
[JS]arr의 다양한 메소드  (0) 2022.05.08
[JS]객체, 배열 연습문제  (0) 2022.04.26
[JS]Object관련 문법  (0) 2022.04.25
[JS]Array관련 문법  (0) 2022.04.19