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/math/base/ops/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 ) );
}
Did you find this page helpful?