Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드스테이츠
- 템플릿 문자열
- 깃허브
- HTML요소
- flex box
- Code States
- 오블완
- 티스토리챌린지
- 외계행성의 나이
- CSS 박스모델
- CSS Object Model
- CSS 스타일
- HTML5문서
- Til
- placeholder
- opacity
- section태그와 article태그의 차이점
- 객체지향프로그래밍
- github
- BOM
- Scope
- display와 visibility
- overflow: hidden
- block 박스
- GIT
- 프로그래머스
- 스코프
- history API
- javascript
- 시맨틱
Archives
- Today
- Total
해말그미의 코딩공부
[고차함수]pipe 본문
pipe
문제
함수들을 입력받아 함수들이 입력된 차례대로 결합된 새로운 함수를 리턴해야 합니다.
입력
인자 1 : func1
- number 타입을 입력받아 number 타입을 리턴하는 함수
인자 2 : func2
- number 타입을 입력받아 number 타입을 리턴하는 함수
인자 N : funcN
- number 타입을 입력받아 임의의 타입을 리턴하는 함수
출력
- 함수를 리턴해야 합니다.
- 리턴되는 함수는 정수를 입력받아 func1, func2, ..., funcN의 순으로 적용합니다.
주의 사항
- 입력되는 함수들의 수는 1개 이상이라고 가정합니다.
- 함수가 아닌 입력은 존재하지 않는다고 가정합니다.
- 입력받은 함수들이 어떤 일을 하는지는 중요하지 않습니다.
입출력 예시
function square(num) {
return num * num;
}
function add5(num) {
return num + 5;
}
function mul3(num) {
return num * 3;
}
function isOdd(num) {
return num % 2 !== 0;
}
let output = pipe(add5, square);
console.log(output(4)); // --> 81
output = pipe(square, add5, mul3);
console.log(output(4)); // --> 63
output = pipe(square, mul3, add5, add5, isOdd);
console.log(output(4)); // --> false
힌트
- 자바스크립트 함수의 인자(arguments)에 대해서 검색해 봅니다. (javascript arguments object)
- Rest 파라미터(나머지 매개변수)를 사용할 수도 있습니다. (rest parameters, )
function pipe(...funcs){
return function(num){
//num이 들어왔다면 변수 result에 숫자를 넣어준다.
let result = num;
for(let i = 0; i<funcs.length; i++){
//result 값에 i번 값에 (result)를 할당
//pipe 함수가 호출될 때, 전달인자로 오는 num이 result 로 최종전달된다.
result = funcs[i](result);
}
return result;
};
}
|
'코플릿' 카테고리의 다른 글
(advanced)convertScoreToGradeWithPlusAndMinus (0) | 2023.04.18 |
---|---|
convertScoreToGrade (0) | 2023.04.18 |
Comments