[TIL] 고차함수

5317 단어 TILTIL

고차함수


1.map

let arr= [1, 2, 3];

let result=arr.map(function(i){
	return i * 2; // 주어진 배열의 2를 곱해준다.
});

result;

이것의 결과는 [2,4,6]이 된다.

즉 map은 주어진 배열의 전부 돌며 모든 값을 전부 출력해준다.
물론 조건을 걸며 원하는 부분만 출력도 가능하다.


2.filter

let arr= [1, 2, 3];

let result=arr.filter(function(i){
	return i % 2 === 0; // 나머지가 0인지 판단
});

result;

이것의 결과 값은 [2]가 나온다.
filter의 가장 큰 특징은 배열의 각 요소가 함수에 따르면, boolean일 때 따로 분리한다.

쉽게 말해서 조건을 따지면서 값을 가져온다.

가장 중요한것은 i가 조건에 참인지 것인지를 판단해줘야한다는 점이다.

마라탕 재료를 고르는 사람을 생각해보자
이 재료를 고르는 사람이 콜백함수가 되는 것이고
다양한 재료를 그릇에 담을때 이 다양한 재료에서 그릇을 담는것을 filter라고 보면된다.

자기가 원하는 것을 담는다 = 조건에 충족한다.

이렇게 생각하면 좋다!


3.reduce

let arr= [1, 2, 3];

let result = arr.reduce(function(acc,cur,idx){
  	return acc+cur; //결과 값 : 7
},1);

result;

acc는 누적값

누적값이 재밌는 점. return이있지만 주어진 배열을 전부 돌때까지 절대 리턴값을 반환하지 않는다 무조건 끝까지 배열을 돈다는 점이다. 조건이 따로 없을 때도 끝까지 뿌려준다.
그리고 항상 값을 누적한다.
위 코드에서 acc+cur로 인하여 값이 만약 3+4로 7이되었다면.
acc에 자동으로 7이 저장되어진다.
이렇게 return가기전에 배열을 전부 끝까지 간 후 최종
저장되어있던 acc값을 return 해준다!

정말 신기방기하다 !!!~~

cur는 현재값(다음값)

for문을 생각해 볼 때 i++가 하나씩 증가하면서 조건이 진행된다.
이것도 똑같이 cur은 배열을 하나씩 진행해가는 현재값이라고 보면 된다. 예를 들어 , arr=[1,2,3]이면
cur은 1,2,3 순서대로 하나씩 들어가면서 코드를 돌것이다.

idx는 배열의 인덱스 번호 (0부터 출발)

arr[idx] => arr[0]=[1] arr[1]=[2] arr[2]=[3]
처럼 맵안에서 고유의 인덱스 번호를가진다.

그리고 중괄호를 빠져나오고 있는 숫자 1은 초기값이다.
빈문자열 빈대괄호 다 가능하다 ('' , [])
이 초깃값은 바로 acc값이 1이라고 정해지는거랑 똑같다.


reduce가 자주사용되어질 때!
-> 더하기 기능 가능 (누적값)
-> 참거짓 판별 가능 (초기값을 false로 줄 때)
-> 대소 비교 (acc와 cur을 부등호로 비교해줄 때)

좋은 웹페이지 즐겨찾기