我正在学习JS中的函数编程,并且正在尝试编写自己的pluck
。
const curry = (f, arr = []) => (...args) =>
(a => (a.length === f.length ? f(...a) : curry(f, a)))([
...arr,
...args,
]);
const map = curry((fn, arr) => arr.map(fn));
const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x);
const prop = curry((key, obj) => obj[key]);
const pluck = pipe(prop, map);
但是由于某些原因,pluck
不起作用。据我认为,这种采摘会:
prop
的键调用pluck
。prop
的{{1}}作为函数放入key
中,该函数从map
返回。pipe
和键。但是
prop
我在做什么错了?
答案 0 :(得分:2)
由于内置的.map()
函数将3个参数传递给回调,因此您的代码变得混乱。很容易解决:
const map = curry((fn, arr) => arr.map(v => fn(v)));