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.
Usage
var map2d = require( '@stdlib/utils/map2d' );
map2d( arr, fcn[, thisArg] )
Applies a function to each nested element in an array of arrays and assigns the result to a nested element in a new array of arrays.
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 = map2d( 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 = map2d( 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 map2d = require( '@stdlib/utils/map2d' ); function fill( i ) { var rand = discreteUniform( -10*(i+1), 10*(i+1) ); return filledarrayBy( 10, 'float64', rand ); } // Create a nested array of arrays: 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 = map2d( x, f ); console.log( 'x:' ); console.log( x ); console.log( 'y:' ); console.log( y );
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/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/map4d: 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.@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.@stdlib/utils/reduce2d: reduce the number of dimensions by one of a two-dimensional nested array by applying a function against an accumulator and each element along the innermost dimension and returning the accumulation results as a one-dimensional array.