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 |