rejectArguments
Create a function that invokes a provided function according to a predicate function.
Usage
var rejectArguments = require( '@stdlib/utils/reject-arguments' );
rejectArguments( fcn, predicate[, thisArg] )
Returns a function that invokes a provided function according to a predicate function.
function foo( a, b ) { return [ a, b ]; } function predicate( v ) { return ( v === 2 ); } var bar = rejectArguments( foo, predicate ); var out = bar( 1, 2, 3 ); // returns [ 1, 3 ]
The predicate 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 predicate( 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 = rejectArguments( foo.scale, predicate, ctx ); var out = bar( 1, 2, 3 ); // returns [ 10, 60 ]
Notes
- Only those arguments in which the
predicatefunction returns a falsy value are applied to a provided function.
Examples
var filledarrayBy = require( '@stdlib/array/filled-by' ); var add = require( '@stdlib/number/float64/base/add' ); var rejectArguments = require( '@stdlib/utils/reject-arguments' ); function fill( i ) { return i; } 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 elements... var f; var i; for ( i = 0; i < x.length-1; i++ ) { f = rejectArguments( add, factory( i, i+2 ) ); console.log( 'sum(x_%d, x_%d) = %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.@stdlib/utils/mask-arguments: create a function that invokes a provided function according to an argument mask.