19 lines
543 B
JavaScript
19 lines
543 B
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
|
const flatten = require('../array/flatten.js');
|
|
|
|
function rearg(func, ...indices) {
|
|
const flattenIndices = flatten.flatten(indices);
|
|
return function (...args) {
|
|
const reorderedArgs = flattenIndices.map(i => args[i]).slice(0, args.length);
|
|
for (let i = reorderedArgs.length; i < args.length; i++) {
|
|
reorderedArgs.push(args[i]);
|
|
}
|
|
return func.apply(this, reorderedArgs);
|
|
};
|
|
}
|
|
|
|
exports.rearg = rearg;
|