Я пытаюсь использовать шаблон уменьшения для массива объектов Javascript. Но вместо того, чтобы делать это в одном редюсере, я хочу иметь возможность использовать другой редуктор на основе набора условий для каждого из элементов массива. Итак, это будет выглядеть следующим образом.
const FOO_MAP = new Map([
["Foo1", Bar1],
["Foo2", Bar2]]
);
function calcTotal(values) {
if (values == null) return 0;
return values.reduce(FOO_MAP.get(value.field));
}
function Bar1(previous, curr){...}
function Bar2(previous, curr){...}
Это возможно? Спасибо!
Вы, кажется, ищете
values.reduce((acc, el, i) => FOO_MAP.get(el.field)(acc, el, i), 0);
Можете ли вы привести полный пример с
values
образцом иBar
реализациями, пожалуйста?