Apply a function to each nested element in a four-dimensional nested array and assign the result to a nested element in a new four-dimensional nested array.
Usage
var map4d = require( '@stdlib/utils/map4d' );
map4d( arr, fcn[, thisArg] )
Applies a function to each nested element in a four-dimensional nested array and assigns the result to a nested element in a new four-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 = map4d( 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 = map4d( 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 map4d = require( '@stdlib/utils/map4d' ); function fill( n ) { if ( n > 0 ) { return array; } return values; function array() { return filledarrayBy( 2, 'generic', fill( n-1 ) ); } function values( i ) { var rand = discreteUniform( -10*(i+1), 10*(i+1) ); return filledarrayBy( 10, 'generic', rand ); } } // Create a four-dimensional nested array: var x = filledarrayBy( 2, 'generic', fill( 2 ) ); // Create an explicit unary function: var f = naryFunction( abs2, 1 ); // Compute the element-wise squared absolute value... var y = map4d( x, f ); console.log( 'x:' ); console.log( JSON.stringify( x, null, ' ' ) ); console.log( 'y:' ); console.log( JSON.stringify( y, null, ' ' ) );
See Also
@stdlib/utils/map: apply a function to each element in an array and assign the result to an element in an output array.@stdlib/utils/map2d: apply a function to each nested element in an array of arrays and assign the result to a nested element in a new array of arrays.@stdlib/utils/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.@stdlib/utils/map5d: apply a function to each nested element in a five-dimensional nested array and assign the result to a nested element in a new five-dimensional nested array.