Javascript 2重新选择输入选择器共享太多代码。如何重构?

Javascript 2重新选择输入选择器共享太多代码。如何重构?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想根据选定的城市选择车库和零售商 这就是我现在拥有的: const garagesSelector = state => state.garages const retailersSelector = state => state.retailers const selectedCitySelector = state => state.cities.selected const garagesInCitySelector = createSelector( garag

我想根据选定的城市选择车库和零售商

这就是我现在拥有的:

const garagesSelector = state => state.garages
const retailersSelector = state => state.retailers
const selectedCitySelector = state => state.cities.selected

const garagesInCitySelector = createSelector(
  garagesSelector,
  selectedCity,
  (garages, city_id) => garages.filter(garage => garage.city_id === city_id)
)

const retailersInCitySelector = createSelector(
  retailersSelector,
  selectedCity,
  (retailers, city_id) => retailers.filter(retailer => retailer.city_id === city_id)
)
它们基本上是一样的,只是它们操作的项目不同。 我想象一个结构,其中
项可以是返回数组的任何选择器

比如:

const inCitySelector = createSelector(
  items,
  selectedCity,
  (items, city_id) => items.filter(garage => item.city_id === city_id)
)
const garagesInCitySelector = inCitySelector(garagesSelector)
const retailersInCitySelector = inCitySelector(retailersSelector)
更新:

const filterByCity = (items, city_id) => item => item.city_id === city_id

const garagesInCitySelector = createSelector(garagesSelector, selectedCity, filterByCity)
const retailersInCitySelector = createSelector(retailersSelector, selectedCity, filterByCity)
但对我来说,代码似乎还是太多了