如何从箭头&获得输出javascript中的咖喱功能

时间:2018-02-22 22:32:22

标签: ecmascript-6 currying arrow-functions

这是我的代码。我没有得到我想要的输出。它应该超过50但它没有。有人请帮我解决这个问题?

const checkNum = entity => typeof entity === 'string' ? parseInt(entity) : entity;
const multiply = (x , y) => x => y => x * y;
const multiOne = (ar, gr) => ar.map(checkNum).map(multiply);
multiOne([5, 10]);

1 个答案:

答案 0 :(得分:2)

map是一对一操作,因此对于您的数组,它会生成另一个数组。第二个论点不是你的想法。

reduce是一个多对一的操作,通过一次重复地对两个元素应用一个操作来获取和数组并减少/折叠它(首先是数组中的两个元素,然后是结果先前的操作与数组的另一个元素相结合。)

const multiply = (x, y) => x * y;
const multiOne = (ar) => ar.reduce(multiply);
console.log(multiOne([5, 10]));

你似乎也想要部分应用功能,但你太过于讨论。 ES6中的标准函数不使用currying,它在实际FP语言中更常见(例如Haskell)。