[SEB FE] section 2 unit 1 (1) 고차 함수 풀이 1~14

동화·2022년 10월 6일
0

코드스테이츠

목록 보기
13/32


1.

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



2.

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



3.

함수와 수(num)를 입력받아 num에 함수를 두 번(twice) 적용(apply)한 결과를 리턴

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



4.

가까운 순서대로 적용

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



5.

두 개의 함수가 결합된 새로운 함수

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



6.

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

// 입력된 차례대로
// 새로운 함수를 리턴



7.

함수를 입력받아 조건 별로 동작 수행

function callbackOnly(callback, response) {
  if (response.status === 'success'){
    return callback(response.data)
  } else {
    return 'Something went wrong!'
  }
}



8.

function mapCallback(func, arr) {
  let result = [];
  for (let el of arr) {
    result.push(func(el)) 
  }
  return result
}

배열을 돌면서 result 배열에 함수가 적용된 배열 요소를 추가한다



9.

결과가 참인 요소만을 추가한 배열

function filterCallback(func, arr) {
  let result = [];
  for (let el of arr){
    if(func(el)){
      result.push(el)
    }
  }
  return result
}

배열의 요소를 돌면서 함수 내 요소를 적용 시켰을 때 true 값이 나오는 (===true) 요소를 result 배열에 추가하여 리턴



10.

임의의 값과 배열을 비교해서 같은 값을 제외한 배열을 출력

function removeElement(arr, discarder) {
  return arr.filter (function (el) {
    if (el !== discarder) {
      return true
    } else {
      return false
    }
  })
}

.filter를 사용하여 discarder 와 같지 않은 요소들은 그대로 두고, 같은 요소들은 제외시킨다.



11.

위와 반대로 일치하는 요소만을 출력. 그냥 반대로 쓰면 된다

function keep(arr, keeper) {
  return arr.filter (function(a){
    if (a === keeper) {
      return true
    }
    return false
  })
}

이때 당시 el이 왜 자꾸 튀어나오는지 몰라서 a를 넣었는데

그냥 변수였을 뿐... 하지만 남들이 다 이렇게 보기좋은 변수를 지정해 놓은 거겠지?

마치 수학에서 함수 변수는 x인것처럼...



12.

문자 배열중에 문자의 길이가 홀수인 문자만 골라서 배열을 만든다

function filterOddLengthWords(words) {
  return words.filter(function(el){
    if (el.length % 2 === 1) {
      return true
    }
    return false
  })
}

filter함수를 이용해서 길이가 홀수인 아이들을 골라낸다!



13.

정수를 요소로 갖는 배열과 정수(num)를 입력받아 num을 배열에 추가하고 정렬한다고 가정할 경우, num의 인덱스를 리턴해야 합니다.

function getIndex(arr, num) {
  return arr.filter (function(el){
    return el < num
  }).length //arr[마지막 인덱스] + 1 을 반환
}

filter를 이용해서 배열의 요소가 입력받은 숫자보다 작은 경우를 걸러낸다

이때 새로 생성한(걸러진) 배열의 길이를 구하면 num의 인덱스를 구할 수 있음.



14.

객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 100 보다 작은 요소들만 갖는 배열을 리턴해야 합니다.

function lessThan100(number) {
  return number < 100;
}
function getElementsLessThan100AtProperty(obj, property) {
  const array1 = obj[property]
  if (Array.isArray(array1)){
    return array1.filter (function(el){
      return typeof el === 'number' && lessThan100(el)
    }) // 타입이 el이 number가 아닌 경우 false를 리턴
  }
  return [];
}

숫자가 100보다 작은 숫자를 출력하는 함수를 먼저 생성
그리고 객체의 요소값을 나열하는 배열을 두번째 함수에 만든다.
조건문을 이용해서 배열이라면, filter를 이용해서 그 요소가 숫자이고 100보다 작은 숫자를 걸러내어
그 배열을 리턴한다.

0개의 댓글