함수형코딩 337 ~358

빵동·2023년 4월 24일

함수형코딩 (완독)

목록 보기
21/29

체이닝 팁

  • 데이터만들기 : 함수형 도구는 배열 전체를 다룰 때 잘 동작한다. 특정 배열중 일부를 다룰 때는 그 일부를 다른 배열로 생성해야 한다.

  • 배열 전체 다루기 : map, filter, reduce로 배열을 처리한다.

  • 작은 단계로 나누기 : 알고리즘이 한번에 많은 일을 한다면 두 단계 이상으로 나눈다.

  • 조건문을 filter로 바꾸기

  • map filter reduce 말고도 다른 함수형 도구가 많다. 함수를 추출하고 좋은 이름을 붙여 사용하자

forEach() : 배열의 모든 요소에 대해 주어진 함수를 실행합니다. map()과 달리 새로운 배열을 반환하지 않습니다.

some() / every() : 배열의 요소 중 일부 또는 모든 요소가 조건을 만족하는지 확인합니다. some()은 적어도 하나의 요소가 조건을 만족하면 true를 반환하고, every()는 모든 요소가 조건을 만족하면 true를 반환합니다.

find() / findIndex() : 배열에서 조건을 만족하는 첫 번째 요소를 찾습니다. find()는 요소 자체를 반환하고, findIndex()는 해당 요소의 인덱스를 반환합니다.

concat() : 배열을 결합합니다. 이 함수는 기존 배열을 변경하지 않고 새로운 배열을 반환합니다.

slice() : 배열의 일부를 추출하여 새로운 배열을 반환합니다.

reduceRight() : reduce()와 유사하지만 배열의 끝에서부터 시작하여 적용합니다.

flatMap() : map()과 유사하지만, 중첩된 배열을 평평하게 만들어 1차원 배열로 만들어 줍니다.

zip() : 두 개 이상의 배열을 결합하여 각 배열의 요소를 조합합니다.

fromEntries() : 배열을 객체로 변환합니다. 이 함수는 Object.entries()와 반대 작업을 수행합니다.

compose() / pipe() : 함수를 조합하여 새로운 함수를 만듭니다. compose()는 오른쪽에서 왼쪽으로 함수를 적용하고, pipe()는 왼쪽에서 오른쪽으로 함수를 적용합니다.

curry() : 다중 인수 함수를 다른 함수의 시퀀스로 변환합니다. 이를 통해 함수를 부분 적용하고 인수를 순서대로 전달할 수 있습니다.

partial() / partialRight(): 함수에 인수 일부를 적용하여 새로운 함수를 반환합니다.

memoize() : 함수의 결과를 캐시하여 동일한 인수에 대해 다시 계산하지 않습니다.

tap() : 함수를 실행하고 인자를 반환합니다. 디버깅에 유용합니다.

throttle() / debounce() : 이벤트 처리에 사용되며, throttle()는 이벤트를 제한된 속도로 실행하고, debounce()는 마지막 이벤트를 기반으로 이벤트를 실행합니다.

flip() : 인수의 순서를 바꿉니다.

zipWith() : 두 개 이상의 배열을 결합하여 각 배열의 요소를 지정된 함수를 사용하여 조합합니다.

groupBy() : 배열을 객체의 그룹으로 변환합니다. 각 그룹은 주어진 함수에 의해 생성된 키로 식별됩니다.

uniq() : 배열에서 중복된 요소를 제거합니다.

sortBy() : 주어진 함수를 사용하여 배열을 정렬합니다.

pluck() : 객체 배열에서 지정된 속성을 추출합니다.

chunk() : 배열을 작은 배열로 나눕니다.

체이닝 디버깅을 위한 팁

  • 구체적인 것은 유지하기 : 명확한 이름을 쉽게 지어야 한다.
  • 단계 사이에 print해보기
  • 구매 리스트를 장바구니로 만들기
const 구매 내역 = [a,b,c,d,e] 
1. 장바구니에 없는 물건을 처음 입력하는 경우
2. 이미 장바구니에 있는 경우
                      
if (장바구니에 item name이 없으면){
구매내역.reduce(addItem, {name, quantity:1, pricepriceLookup(item)})
}else{
  const 수량 = cart[item].quantity;
  cart[item].setFieldByName('quantity', quantity+1)
}            
                      
  • 함수형 도구는 체인으로 연결할 수 있다
  • 함수형 도구를 체인으로 연결하는건 SQL같은 쿼리언어로 볼 수 있다.
  • 체인을 연결할 때 기존 데이터를 인자로 사용하거나, 새로운 데이터를 반환해야 하는 경우가 있다. 최대한 정보를 명시적으로 처리해야한다.

Chapter 14 중첩된 데이터에 함수형 도구 사용하기

  • 객체에 함수형 도구 적용하기

0개의 댓글