Add rearg

This commit is contained in:
Angelos Chalaris
2018-01-28 15:04:21 +02:00
parent d1f222bc62
commit fd35820293
2 changed files with 26 additions and 0 deletions

25
snippets/rearg.md Normal file
View File

@ -0,0 +1,25 @@
### rearg
Creates a function that invokes the provided function with its arguments arranged according to the specified indexes.
Use `Array.reduce()` and `Array.indexOf()` to reorder arguments based on `indexes` in combination with the spread operator (`...`) to pass the transformed arguments to `fn`.
```js
const rearg = (fn, indexes) => (...args) =>
fn(
...args.reduce(
(acc, val, i) => ((acc[indexes.indexOf(i)] = val), acc),
Array.from({ length: indexes.length })
)
);
```
```js
var rearged = rearg(
function(a, b, c) {
return [a, b, c];
},
[2, 0, 1]
);
rearged('b', 'c', 'a'); // ['a', 'b', 'c']
```

View File

@ -187,6 +187,7 @@ randomIntArrayInRange:math,utility,random
randomIntegerInRange:math,utility,random
randomNumberInRange:math,utility,random
readFileLines:node,array,string
rearg:adapter,function
redirect:browser,url
reducedFilter:array
reduceSuccessive:array,function