# reorderArguments
> Create a function that invokes a provided function with reordered arguments.
## Usage
```javascript
var reorderArguments = require( '@stdlib/utils/reorder-arguments' );
```
#### reorderArguments( fcn, indices\[, thisArg] )
Returns a `function` that invokes a provided function with reordered `arguments`.
```javascript
function foo( a, b ) {
return [ a, b ];
}
var bar = reorderArguments( foo, [ 1, 0 ] );
var out = bar( 1, 2 );
// returns [ 2, 1 ]
```
To set the `this` context when invoking the provided function, provide a `thisArg`.
```javascript
function Foo() {
this.x = 1;
this.y = 2;
}
Foo.prototype.scale = function scale( a, b ) {
return [ this.x*a, this.y*b ];
};
var ctx = {
'x': 10,
'y': 20
};
var foo = new Foo();
var bar = reorderArguments( foo.scale, [ 1, 0 ], ctx );
var out = bar( 1, 2 );
// returns [ 20, 20 ]
```
## Examples
```javascript
var reorderArguments = require( '@stdlib/utils/reorder-arguments' );
function foo( a, b, c ) {
return [ a, b, c ];
}
var bar = reorderArguments( foo, [ 2, 0, 1 ] );
var out = foo( 1, 2, 3 );
// returns [ 1, 2, 3 ]
out = bar( 1, 2, 3 );
// returns [ 3, 1, 2 ]
```