함수형 프로그래밍은 fx.js를 이용해서 진행했다.
제이쿼리에 절여진 과거의 내가 그대로 멈춰있어서 익숙해지는데 한참 걸릴 것 같아 이것부터 차례로 남기기로 한다. 😂
선언과 클래스에 절여져서 아직도 어려움
애초에 (a, b) -> a + b 부터 으에엥 했는데 쉬울 리가
1. filter
filter는 if문을 대체할 수 있다.
if 대신 filter를 사용함으로 인해 배열을 가져오거나 할 대 시간복잡도를 줄일 수 있다.
function f1(limit, list){
let acc = 0;
for(const a of list){
if(a % 2){
const b = a * a;
acc += b;
if(--limit == 0) break;
}
}
}
기존에 이러한 코드가 있다고 가정할 때, for문은 무조건 순차적으로 if까지 돌게 된다. 여기에서 filter를 쓰면 코드는 다음과 같아진다.
function f2(limit, list){
let acc = 0;
for(const a of L.filter(a => a % 2, list)){
const b = a * a;
acc += b;
console.log(b);
if(--limit == 0) break;
}
}
filter를 쓰게 되면, true일 경우(true는 존재할 경우이기 때문에 a % 2의 나머지가 1이면 존재하므로 반환)에만 for문을 통해 순회하기 때문에 짝수일 경우 순회하는 경우의 수를 확 줄여준다.
if문에 사용되는 것을 대체할 수 있으며, L.filter(변수 => 식, 배열) 로 사용할 수 있고, js에서는 array.filter(변수 => {조건식}) 을 통해서도 사용할 수 있다. 다중 조건을 걸 경우에는 연산식을 추가하는 것도 가능하다. 바닐라 스크립트에서 사용할 경우는 다음과 같다.
function filterCall(list){
return list.filter(el => {el % 2 === 1});
}
function f7(limit, list){
for(const a of filterCall(list)){
console.log(a);
}
}
f7(3, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
한 줄에 전체를 표현할 수도 있지만...! 보기 쉽게 하기 위해서 분리를 했다 ^0^;
바닐라에서는 이와 같이 사용하면 됨!
fx.js 사용하면서 바닐라랑 같이 공부하려니까 살짝 어지럽긴 함
'JavaScript' 카테고리의 다른 글
[함수형 프로그래밍] take (0) | 2024.02.21 |
---|---|
[함수형 프로그래밍] map (0) | 2024.02.21 |