mskfilterMap
Apply a mask to a provided input array and return a new array after applying a mapping function.
Usage
var mskfilterMap = require( '@stdlib/array/base/mskfilter-map' );
mskfilterMap( x, mask, clbk[, thisArg] )
Applies a mask to a provided input array and returns a new array after applying a mapping function.
function clbk( value ) {
return value * 2;
}
var x = [ 1, 2, 3, 4 ];
var m = [ 0, 1, 0, 1 ];
var y = mskfilterMap( x, m, clbk );
// returns [ 4, 8 ]
The function supports the following parameters:
- x: input array.
- mask: mask array.
- clbk: function to apply.
- thisArg: applied function execution context (optional).
To set the applied function's execution context, provide a thisArg
.
function clbk( x ) {
this.count += 1;
return x;
}
var x = [ 1, 2, 3, 4 ];
var m = [ 1, 1, 0, 1 ];
var ctx = {
'count': 0
};
var y = mskfilterMap( x, m, clbk, ctx );
// returns [ 1, 2, 4 ]
var v = ctx.count;
// returns 3
The function always returns a new "generic" array.
mskfilterMap.assign( x, mask, out, stride, offset, clbk[, thisArg] )
Applies a mask and mapping function to a provided input array and assigns results to elements in a provided output array.
function clbk( value ) {
return value * 2;
}
var x = [ 1, 2, 3, 4 ];
var m = [ 0, 1, 0, 1 ];
var out = [ 0, 0, 0, 0 ];
var arr = mskfilterMap.assign( x, m, out, -2, out.length-1, clbk );
// returns [ 0, 8, 0, 4 ]
var bool = ( arr === out );
// returns true
The function supports the following parameters:
- x: input array.
- mask: mask array.
- out: output array.
- stride: output array stride.
- offset: output array offset.
- clbk: function to apply.
- thisArg: applied function execution context (optional).
Notes
- If a
mask
array element is truthy, the corresponding element inx
is included in the output array; otherwise, the corresponding element inx
is "masked" and thus excluded from the output array.
Examples
var zeroTo = require( '@stdlib/array/base/zero-to' );
var bernoulli = require( '@stdlib/random/array/bernoulli' );
var abs2 = require( '@stdlib/math/base/special/abs2' );
var mskfilterMap = require( '@stdlib/array/base/mskfilter-map' );
// Generate a linearly spaced array:
var x = zeroTo( 20 );
console.log( x );
// Generate a random mask:
var mask = bernoulli( x.length, 0.5, {
'dtype': 'generic'
});
console.log( mask );
// Filter an array using the mask:
var y = mskfilterMap( x, mask, abs2 );
console.log( y );