javascript - 将参数传递给 reducer 函数
问题描述
我正在学习如何使用reduce,但在acc、val 参数上仍有一点心理障碍。我的目标是能够将额外的参数传递给 reducer 函数,并且确信我只是以错误的方式进行操作。
const array = [1,2,3,4,5];
const multiply = (num, multiplier) => num * multiplier;
const multiplier = (acc, val) => acc += multiply(val, 4);
const result = array.reduce(multiplier);
console.log(result);
在这个代码块中,我正在对我的数组运行乘数归约器,以将每个值乘以 4。这段代码工作正常,一切都很好,但我想让它可以传递任何值而不是硬编码 4. 我尝试过类似的东西
const multiplier = (acc, val, multiple) => acc += multiply(val, multiple);
const result = array.reduce(multiplier(4)
能够传入一个乘数,但是“acc,val”参数让我很困惑,因为我没有专门“看到”传入的值是什么。我知道它传入 1 然后 2 然后 3 等等. 但是你如何传递一个额外的参数,比如自定义乘数,而不是为每个倍数都需要一个不同的乘数函数?
解决方案
将其作为一个可以按预期工作的柯里化函数:
const multiplier = factor => (acc, val) => acc += multiply(val, factor);
const result = array.reduce(multiplier(4));
这样,当您调用multiplier(4)
它时,它将返回一个定制的函数factor
,您可以按照您的预期在减速器上使用该函数。
推荐阅读
- java-ee-8 - CustomAuthenticationMechanism 调用 identityStoreHandler.validate 后没有获取 callerGroups
- snowflake-cloud-data-platform - 如何获取具有差异页码的记录
- node.js - 每次更改文件时运行的 Node.js 包脚本
- haskell - 使用 Stack (Haskell) 时嵌套的 git 依赖项
- visual-studio - 离线文档访问互联网琐碎主题
- vagrant - Vagrant 无法挂载 VirtualBox 共享文件夹。错误:无效的参数
- python - Python将一个区域的时间转换为另一个区域的时间
- css - 溢出-x 隐藏和溢出-y 可见
- google-cloud-platform - 带有过滤器的 GCP 自定义 iam 角色
- api - 如何将数据库调用和 REST 调用合并到一个聚合中?