Преимущества использования JavaScript уменьшают по сравнению с функцией карты - PullRequest
0 голосов
/ 04 февраля 2020

Конечно, есть много вопросов, чтобы сравнить функцию JavaScript reduce с функцией map. Но мой вопрос точно связан с моей проблемой, я должен изменить элемент внутри коллекции на основе условия, я могу написать двумя способами, используя map или reduce:

// using map function

const formGroupModifierToMultiSelectLocation = (groups: Object[]) =>
  groups.map(({ components: cs, ...other }) => ({
    components: cs.map(({ type, ...rest }) => ({
      multiple: type === 'location',
      type,
      ...rest,
    })),
    ...other,
  }));
// using reduce function

const formGroupModifierToMultiSelectLocation = (groups: Object[]) =>
  groups.reduce(
    (acc, { components: cs, ...other }) => [
      ...acc,
      {
        components: cs.map(({ type, ...rest }) => ({
          multiple: type === 'location',
          type,
          ...rest,
        })),
        ...other,
      },
    ],

Я предпочитаю использовать map, потому что он более читабелен, чем reduce. Я не знаю, может быть, в моем случае использование reduce имеет некоторые преимущества, которых я не знаю. В обзоре кода рецензент предлагает мне использовать reduce вместо map. У меня нет причин менять свои коды.

Актуальный вопрос: Каковы преимущества использования JavaScript уменьшение по сравнению с функцией карты в моем случае?

1 Ответ

1 голос
/ 04 февраля 2020

reduce полезно, если вы хотите преобразовать массив в объект. Если вы просто хотите изменить массив, то map будет работать нормально.

В качестве примера рассмотрим объект данных, для которого вы хотите удалить определенный ключ.

const data = {
    a: 'x',
    b: 'y',
    c: 'z',
}

Object.keys(data).filter((item) => item !== 'b').reduce((carry, item) => ({
    ...carry,
    [item]: data[item],
}), {})
...