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 in x is included in the output array; otherwise, the corresponding element in x 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 );
Did you find this page helpful?