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이다.