본문 바로가기

filter함수

[ES6+: 응용] map과 filter로 하는 안전한 함수 합성 #1 안전한 함수 합성 map으로 합성하기 다음과 같은 합성함수를 선언했다. const f = x => x + 10; const g = x => x - 5; const fg = x => f(g(x)); 위와 같이 함수를 선언했을 때, 아래와 같이 인자값 없이 값을 실행하면 'NaN'으로 에러가 난다. console.log(fg(10)); // 15 console.log(fg()); // NaN - 에러가 난다. 잘못된 값이 들어왔을때, 아무 동작도 하지 않게끔 하려면 어떻게 해야될까? 바로 모나드와 map함수를 통해 안전한 합성을 이룰 수 있다. 위와 똑같은 동작을 하는 함수를 go 함수를 통해 나타내보자. _.go( 10, fg, console.log); // 15 이제, 이것을 안전한 함수 합성을 위.. 더보기
[JS: ES6+] 장바구니 예제로 코드를 줄이고 HTML로 표현해보기 #1 go, pipe, curry를 활용한 코드 줄이기 실습 장바구니 예제 실습 앞에서 배웠던 [go, pipe, curry: https://opentogether.tistory.com/70?category=807380]를 기반으로 코드를 줄여보는 것을 한번 더 해볼것이다. /*외부 파일: fx.js*/ const go = (...args) => args.reduce((a, f) => { return f(a); }); const pipe = (...funcs) => arg => funcs.reduce((a, f) => f(a), arg); const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._); const map = cur.. 더보기
[JS: ES6+] 코드를 값으로 다루어 표현력 높이기 (go, pipe) #1 go, pipe 함수를 통해 표현력을 높이기 go, pipe 함수란 무엇인가? 코드를 값으로 다룬다면 전체적인 코드의 표현력을 높일 수 있는데, go, pipe를 구현해서 표현력을 높여보자. 먼저 다음과 같은 코드가 있다고 가정하자. a(b,c(d,e())); 위 코드는 함수가 연속해서 중첩되어 가독성이 떨어져서, 작성하기도 해석하기도 힘들다. 이를 간편하게 더 읽기 쉽게 코드를 짜기 위해서 위에서 언급한 go, pipe 함수를 활용해보자. 우선 go 함수를 보자. go 함수는 인자를 받아 결과를 바로 산출해내는 함수로, 첫번째 인자는 시작되는 값을 받고, 나머지는 함수를 받아 첫번째 인자가 두번째 함수로 가서 결과를 만들고 그 결과가 또 세번째 함수로 가서 결과가 만들어지는 순으로 진행된다. 이러.. 더보기