mapArguments
Create a function that applies arguments to a provided function after transforming arguments according to a callback function.
Usage
var mapArguments = require( '@stdlib/utils/map-arguments' );
mapArguments( fcn, clbk[, thisArg] )
Returns a function that invokes a provided function after transforming arguments according to a callback function.
function foo( a, b, c ) { return [ a, b, c ]; } function clbk( v ) { return v * 2; } var bar = mapArguments( foo, clbk ); var out = bar( 1, 2, 3 ); // returns [ 2, 4, 6 ]
The clbk function is provided the following arguments:
- value: argument value.
- index: argument index.
To set the this context when invoking the input function, provide a thisArg.
function clbk( v ) { return v * 2; } 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 = mapArguments( foo.scale, clbk, ctx ); var out = bar( 1, 2 ); // returns [ 20, 80 ]
Examples
var filledarrayBy = require( '@stdlib/array/filled-by' ); var add = require( '@stdlib/number/float64/base/add' ); var filterArguments = require( '@stdlib/utils/filter-arguments' ); var mapArguments = require( '@stdlib/utils/map-arguments' ); function fill( i ) { return i; } function scale( v ) { return v * 2.0; } function factory( i, j ) { return predicate; function predicate( value, index ) { return ( i <= index ) && ( index < j ); } } // Create a data array: var x = filledarrayBy( 10, 'float64', fill ); // Compute the sum of consecutive squared elements... var f; var i; for ( i = 0; i < x.length-1; i++ ) { f = filterArguments( mapArguments( add, scale ), factory( i, i+2 ) ); console.log( 'sum(x_%d^2, x_%d^2) = %d', i, i+1, f.apply( null, x ) ); }
See Also
@stdlib/utils/filter-arguments: create a function that invokes a provided function according to a predicate function.