map3d
Apply a function to each nested element in a three-dimensional nested array and assign the result to a nested element in a new three-dimensional nested array.
Usage
var map3d = require( '@stdlib/utils/map3d' );
map3d( arr, fcn[, thisArg] )
Applies a function to each nested element in a three-dimensional nested array and assigns the result to a nested element in a new three-dimensional nested array.
var naryFunction = require( '@stdlib/utils/nary-function' );
var abs = require( '@stdlib/math/base/special/abs' );
var arr = [
[ [ -1, -2, -3 ] ],
[ [ -4, -5, -6 ] ]
];
var out = map3d( arr, naryFunction( abs, 1 ) );
// returns [ [ [ 1, 2, 3 ] ], [ [ 4, 5, 6 ] ] ]
The applied function is provided the following arguments:
- value: array element.
- indices: current array element indices.
- arr: input array.
To set the this
context when invoking the input function, provide a thisArg
.
var abs = require( '@stdlib/math/base/special/abs' );
function fcn( v ) {
this.count += 1;
return abs( v );
}
var arr = [
[ [ -1, -2, -3 ] ],
[ [ -4, -5, -6 ] ]
];
var ctx = {
'count': 0
};
var out = map3d( arr, fcn, ctx );
// returns [ [ [ 1, 2, 3 ] ], [ [ 4, 5, 6 ] ] ]
var cnt = ctx.count;
// returns 6
Examples
var filledarrayBy = require( '@stdlib/array/filled-by' );
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory;
var naryFunction = require( '@stdlib/utils/nary-function' );
var abs2 = require( '@stdlib/math/base/special/abs2' );
var map3d = require( '@stdlib/utils/map3d' );
function nestedFill( i ) {
var rand = discreteUniform( -10*(i+1), 10*(i+1) );
return filledarrayBy( 10, 'float64', rand );
}
function fill() {
return filledarrayBy( 10, 'generic', nestedFill );
}
// Create a three-dimensional nested array:
var x = filledarrayBy( 10, 'generic', fill );
// Create an explicit unary function:
var f = naryFunction( abs2, 1 );
// Compute the element-wise squared absolute value...
var y = map3d( x, f );
console.log( 'x:' );
console.log( x );
console.log( 'y:' );
console.log( y );