내장 고차함수

be kid·2022년 1월 7일
0

BEB - 웹 개발 과정

목록 보기
9/28

고차함수를 배열 내장 고차함수를 알아보고 사용해보며 이해하는 시간..

배열 내장 고차함수 중 많이 쓰이는
filter, map, reduce를 우선 학습하고,
find, sort, some, every 등... 찾아보며 알아보았다.

우선 filter, map, reduce 각각에 대해서...

filter

말 그대로 필터다.
배열의 각 요소를 모두 순회하면서 내가 정해준 조건(반환 값이 boolean값인 함수)을 만족하면 선택되고 그렇지 않으면 버려진다.
숫자만 있는 배열에서 짝수만 골라내기, 특정 길이 이상인 문자열만 골라내기 같은 작업을 할 수 있다는 얘기다.

map

map은 파이썬에 있는 것과 비슷한 것 같다.
다만 파이썬에서는 list(map(int, input().split())) 같은 입력할 때 쓰는 용도로 밖에 안써봤는데, 용도를 잘 몰랐던 탓도 있는 것 같다.
map은 filter랑은 다르게 원본 배열과 똑같은 크기의 배열을 만들어낸다. (물론 filter도 똑같은 크기가 나올수는 있다만)
배열의 각 요소를 모두 순회하면서 특정 작업(함수)을 거친 뒤 반환된 값으로 배열에 지정이 된다.
배열의 모든 요소에 2 곱하기와 같은 단순한 작업부터 object에서 특정 값만 꺼내기 등 다양한 일이 가능하다.

reduce

나에겐 완전히 새로운 느낌의 함수였다.
일단 이 함수는 배열의 각 요소를 특정 방법(함수)에 따라 원하는 하나의 형태로 응축한다! 라고 하는데, 이건 정말 기본적인 사용법이고 다양하게 응용이 가능한 녀석인듯 하다.
reduce는 응축값과 현재값을 기본적으로 필요로 하는데 단순히 현재값을 계속 응축값에 누적시키며 사용할 수도 있지만 특정 조건에 따라 필요한 값만 합친다던지, 응축대신 갱신을 하는 방식으로 최대값, 최소값 등 특정 값을 찾는? 활용 방법이 다양한 것 같다.
reduce의 아쉬운 점은 break를 할 수 없다는 것.

편리한 함수들이지만 상황에 맞게 잘 쓰는것이 당연히 중요하다.

배열의 각 요소 중에서 ~한 요소만 골라 이런저런 작업을 해준 뒤 어떤 결과를 내놓아라! 같은 문제 상황이 주어지면
대충
arr.filter().map().reduce() 같은 모양새의 코드를 작성할 수 있을텐데,
이런것을 보고 method chaining이라고 하며 이것이 우리가 고차함수를 써야하는 이유

저런 함수들을 몰라도 물론 해결할 수 있다. 다만 코드가 훨씬 길어지고 알아보기 힘들어질 수 있다.
줄줄이 늘어진 for문을 보는 것 보다 음~ 필터링하고 맵핑한 다음에 리덕션했구나~ 하며 훨씬 빠르게 이해할 수 있을 것이다.

profile
개쩌는 개발자가 되고 싶다 !

0개의 댓글