微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将参数传递给 reducer 函数

如何解决将参数传递给 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 量身定制的函数,您可以按照预期在减速器中使用该函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。