고차함수 코플릿 정리.

문종후·2023년 3월 14일
0

6. pipe함수

함수들을 입력받아 함수들이 입력된 차례대로 결합된 새로운 함수를 리턴해야 합니다.
func의 개수는 정해져잇지않고 N개로 칭한다.

문제의 포인트는 N개의 func을 어떤식으로 표현해낼지. 이를 배열로 표현하기로했다.

먼저 이를 설명하기전에 간단하게 이전에 학습했던 개념인 ...에대해서 설명해보고자한다.
'비구조화 할당(destructuring assignment) 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 자바스크립트 표현식(expression)'입니다.
==>간단하게 정리하면 배열 [], 혹은 객체 {} 안의 값을 편하게 꺼내 쓸 수 있는 문법입니다.
이를 이용하면 func1 func2 func3.....funcN으로 표현된 N 개의함수를

...funcs 혹은 ...arr을 통해 한번에 표현가능하다.그리고 순서대로 함수를 적용하는것은 반복문으로 표현해주었다.

먼저그래서 func(...arr)={
return function(num){let result=num;for(let i=0;i<arr.length;i++){
result=arri;}
return result

8.함수와 배열을 입력받아 배열의 각 요소에 함수가 적용된 새로운 배열을 리턴해야 합니다.

간단하게 배열전체를 요소에따라 적용한후 새로운배열을 리턴해주면된다.

따라서 새로운배열을 먼저 정의해준다

let newArr=[];
for(let value of arr){newArr.push(func(value));}
return newArr

13.getIndex

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

arr.push(num);
return arr.filter(function (ele){
return ele < num
}).length;

KEY:오름차순정렬이 포인트인거를 이해하지못해서 오래걸렸다.

내장 고차함수의 활용 간단정리.

return arr.map(function(el){return el*2;}) 2배가되는함수.
getLengthOfElements

문제
문자열을 요소로 갖는 배열을 입력받아 각 요소의 길이를 요소로 갖는 새로운 배열을 리턴해야 합니다.

return arr.map(function(el){return el.length;})
filter 이두가지는 위를따른다.-->이를 이해하면 모든코플릿문제해결가능.

함수를 새로정의하고 안쪽에 집어넣어도되지만 직접입력하는게 조금더 깔끔할수도있다.

checkEvenOrNot

<이를바탕으로 문제를 하나 풀어보려한다.>
문제
수를 요소로 갖는 배열을 입력받아 각 요소가 2의 배수인지에 대한 정보를 요소로 갖는 새로운 배열을 리턴해야 합니다.
function checkEvenOrNot(arr) {
// TODO: 여기에 코드를 작성합니다.
return arr.map(function(el){if(el%2==0&&el>1){
return 'ok'}
else return 'no'})

(arr.reduce) Reduce 활용법

arr.reduce((acc,cur)=>{return acc+cur})

acc-> 응축된값, cur->현재배열요소(초기값을 설정하지않는다면 기본적으로 배열내에서
cur이 첫번째요소로 적용됨)

초기값을 적용하고싶다 그렇다면

arr.reduce((acc,cur)=>{return acc+cur},10)->10이 초기값으로설정

문제를하나풀어보자

배열요소의 모든합을 구한후 리턴하는 함수이다.

function computeSumOfAllElements(arr) {
// TODO: 여기에 코드를 작성합니다.
const result =arr.reduce((a,b)=>{return a+b},0)
return result
}

간단하게 만들수있다.

profile
개발자가되고싶은사람

0개의 댓글