if문 대신 filter?

오병진·2022년 5월 2일
0

FxTs

목록 보기
4/4

배열을 다룰 때, if 대신 filter를 이용하여
한번에 여러 배열에 조건을 거는 방식이다.

빠르게 코드로 이해를 해보자

function newArr(n) {
  let i = 1;
  const res = [];
  while (i < n) res.push(i++);
  return res;
}

function solution1(n){
  const arr1 = newArr(n);
  let arr2 = [];
  
  for(let i = 0; i < arr1.length; i++){
    arr1[i] *= 2;
    if(arr1[i] % 4 === 0){
      arr2.push(arr1[i]);
    }
  }
  console.log(arr2); 
}

solution1(10); // expected [4, 8, 12, 16]

다음과 같은 코드를 한번 건들여보겠습니다.

function solution2(n){
  const arr1 = newArr(n);
  
  for(let i = 0; i < arr1.length; i++){
    arr1[i] *= 2;
  }
  const arr2 = arr1.filter((v) => v % 4 === 0);
  console.log(arr2); 
}

solution2(10); // expected [4, 8, 12, 16]

Array.prototype.filter()를 이용하여 줄여보았습니다.

그 다음 솔루션은 역시 FxTs를 이용해보겠습니다.

function solution3(n){
  const arr2 = pipe(
    newArr(n),
    map(v => v * 2),
    filter(v => v % 4 === 0),
    toArray
  );
  console.log(arr2);
}

solution3(10); // expected [4, 8, 12, 16]

사실 FP를 지향하는 이유는 유지보수하기 편한 코드가 아닐까싶네요

profile
지나가는 사람입니다. 마저 지나갈게요 :D

0개의 댓글