30秒学会 JavaScript 片段 · 2020年5月18日

30秒学会 JavaScript 片段 – rearg

Creates a function that invokes the provided function with its arguments arranged according to the specified indexes.

Use Array.prototype.map() to reorder arguments based on indexes in combination with the spread operator (...) to pass the transformed arguments to fn.

代码片段

const rearg = (fn, indexes) => (...args) => fn(...indexes.map(i => args[i]));

使用样例

var rearged = rearg(
  function(a, b, c) {
    return [a, b, c];
  },
  [2, 0, 1]
);
rearged('b', 'c', 'a'); // ['a', 'b', 'c']