javascript - 与 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 有什么优势?
解决方案
reduce
如果要将数组转换为对象,这很有帮助。如果你只是想修改一个数组,那么map
就可以了。
例如,考虑要删除某个键的数据对象。
const data = {
a: 'x',
b: 'y',
c: 'z',
}
Object.keys(data).filter((item) => item !== 'b').reduce((carry, item) => ({
...carry,
[item]: data[item],
}), {})
推荐阅读
- html - 现代网络浏览器引擎中颜色的原生表示是什么?
- android - 未找到 Android SDK 位置
- angular - Angular 9 常春藤错误
有多个 mat-hints - docker - 从手动 Docker 主机网络传递到 Docker Compose 网桥
- html - 如何在 antd select 元素上实现自动填充功能?
- javascript - 使用 lang=ts 和 lang=js 的基于类的组件
- corda - Corda - 具有聚合 SUM 的 VaultQuery(MappedSchema 中的 Double 字段)
- c++ - C ++字符串中的空字符?
- google-bigquery - 如果 bigquery 中不存在记录,如何返回 0 值
- swift - Swift中具有2边角半径的透明背景按钮