30秒学会 JavaScript 片段 · 2017年7月13日

30秒学会 JavaScript 片段 – overArgs

Creates a function that invokes the provided function with its arguments transformed.

Use Array.prototype.map() to apply transforms to args in combination with the spread operator (...) to pass the transformed arguments to fn.

代码片段

const overArgs = (fn, transforms) => (...args) => fn(...args.map((val, i) => transforms[i](val)));

使用样例

const square = n => n * n;
const double = n => n * 2;
const fn = overArgs((x, y) => [x, y], [square, double]);
fn(9, 3); // [81, 6]