검색 필터, 함수형 프로그래밍

GyungHo Go·2022년 6월 8일
0
const searchResult = [
  {
    id: 1,
    name: 'GS25',
    canEat: true,
    canParking: false,
    canDelivery: true,
    isEvent: false,
    loaction: '서울시 성동구',
  },
    {
    id: 2,
    name: 'GS25',
    canEat: true,
    canParking: true,
    canDelivery: true,
    isEvent: true,
    loaction: '서울시 강남구',
  },  {
    id: 3,
    name: 'GS25',
    canEat: false,
    canParking: false,
    canDelivery: true,
    isEvent: false,
    loaction: '서울시 광진구',
  },  {
    id: 4,
    name: 'GS25',
    canEat: true,
    canParking: false,
    canDelivery: false,
    isEvent: false,
    loaction: '서울시 서초구',
  },  {
    id: 5,
    name: 'GS25',
    canEat: true,
    canParking: true,
    canDelivery: true,
    isEvent: false,
    loaction: '서울시 관악구',
  },
];

  let filterResult1 = searchResult;

  spotSearchSelectedFilters.forEach((elem) => {
    filterResult1 = filterResult1?.filter((item) => item[elem]);
  });

  let filterResult2 = searchResult;
  filterResult2 = filterResult2.filter(spot => 
    spotSearchSelectedFilters.every(filterItem => spot[filterItem]));

filterResult1과 filterResult2의 차이는 searchResult를 overwrite 했냐 아니냐의 차이이다. 결국 좀 더 함수형 프로그램스럽고, 깔끔하게 떨어지는건 filterResult2이다.

profile
기록하는 습관

0개의 댓글

관련 채용 정보