pluck的功能构成

Function composition of pluck

我正在学习 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 不起作用。就我的想法而言,这种勇气将:

但是,

pluck('foo')([{ foo: 'bar'}]);
[ƒ]

我做错了什么?

因为 built-in .map() 函数将 3 个参数传递给回调,您的代码变得混乱。很容易修复:

const map = curry((fn, arr) => arr.map(v => fn(v)));