首页 > 解决方案 > 与 map 函数相比,使用 JavaScript reduce 的优势

问题描述

当然,有很多问题可以比较 JavaScriptreduce函数和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. 我不知道,也许在我的情况下 usingreduce有一些我不知道的优势。在代码审查中,审查者建议我reduce使用map. 我没有理由更改我的代码。

实际问题:在我的情况下,与 map 函数相比,使用 JavaScript reduce 有什么优势?

标签: javascriptreduce

解决方案


reduce如果要将数组转换为对象,这很有帮助。如果你只是想修改一个数组,那么map就可以了。

例如,考虑要删除某个键的数据对象。

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

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

推荐阅读