将参数传递给 reducer 函数
Passing a parameter into a reducer function
我正在学习如何使用 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)
时,它将 return 一个根据所需 factor
量身定制的函数,您可以像预期的那样在 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)
时,它将 return 一个根据所需 factor
量身定制的函数,您可以像预期的那样在 reducer 中使用它。