Я пытаюсь угадать ваши требования здесь, исходя из того, что я вижу в коде. Мне кажется, что вам нужны foodTypes из config
, которые также можно найти в args
, отсортированные по порядку, в котором они появляются в config
. Это верно?
Если так, то этот код, похоже, работает:
const getPriority = (args) => (config) =>
config .reduce ((a, {foodType}) => args.includes(foodType) ? [...a, foodType] : a, [])
const args = [ 'BBQ', 'Tuna', 'Cake', 'Wood' ]
const config = [ { foodType: 'Tuna' },
{ foodType: 'Sprouts' }, // added -- not everything is in output
{ foodType: 'BBQ' },
{ foodType: 'Cake' } ]
console .log (getPriority (args) (config))
Мы могли бы использовать для этого некоторую функцию Ramda, если бы выбрали:
const getPriority = (args) =>
reduce ((a, {foodType}) => includes (foodType, args) ? append(foodType, a) : a, [])
Или, возможно, другую версию:
const getPriority = (args) =>
pipe(pluck('foodType'), filter(flip(includes)(args)))
... но они, кажется, не добавляют много к этой функции. Я один из основателей Ramda, но я считаю его инструментом, который можно использовать, когда он помогает, а не новым фреймворком или мини-языком для программирования. Здесь, кажется, не так много пользы.