4.5 KiB
4.5 KiB
iterator2array
Create (or fill) an array from an iterator.
Usage
var iterator2array = require( '@stdlib/array/from-iterator' );
iterator2array( iterator[, out][, mapFcn[, thisArg]] )
Creates (or fills) an array from an iterator
.
var randu = require( '@stdlib/random/iter/randu' );
var opts = {
'iter': 10
};
var arr = iterator2array( randu( opts ) );
// returns <Array>
By default, the function creates and fills a generic array
. To fill an array-like object
, provide an out
argument.
var Float64Array = require( '@stdlib/array/float64' );
var randu = require( '@stdlib/random/iter/randu' );
var out = new Float64Array( 10 );
var arr = iterator2array( randu(), out );
// returns <Float64Array>
var bool = ( out === arr );
// returns true
To invoke a function for each iterated value, provide a callback function.
var array2iterator = require( '@stdlib/array/to-iterator' );
function fcn( v ) {
return v * 10.0;
}
var arr = iterator2array( array2iterator( [ 1, 2, 3, 4 ] ), fcn );
// returns [ 10.0, 20.0, 30.0, 40.0 ]
The invoked function is provided two arguments:
value
: iterated valueindex
: iterated value index
var Float64Array = require( '@stdlib/array/float64' );
var randu = require( '@stdlib/random/iter/randu' );
function fcn( v, i ) {
return v * (i+1);
}
var arr = iterator2array( randu(), new Float64Array( 10 ), fcn );
// returns <Float64Array>
To set the callback function execution context, provide a thisArg
.
var Float64Array = require( '@stdlib/array/float64' );
var randu = require( '@stdlib/random/iter/randu' );
function fcn( v ) {
this.count += 1;
return v * 10.0;
}
var ctx = {
'count': 0
};
var arr = iterator2array( randu(), new Float64Array( 10 ), fcn, ctx );
// returns <Float64Array>
var count = ctx.count;
// returns 10
Notes
- If provided an output array, the function fills the output array with iterated values.
- Iteration stops when an output array is full or an iterator finishes; whichever comes first.
- By providing an output typed array, one avoids the temporary memory allocation when using the built-in
TypedArray.from
.
Examples
var Float64Array = require( '@stdlib/array/float64' );
var randu = require( '@stdlib/random/iter/randu' );
var iterator2array = require( '@stdlib/array/from-iterator' );
var opts;
var arr;
var it;
var i;
function scale( v, i ) {
return v * (i+1);
}
// Create an iterator for generating uniformly distributed pseudorandom numbers:
opts = {
'iter': 10
};
it = randu( opts );
// Fill an array with scaled iterator values:
arr = iterator2array( it, new Float64Array( opts.iter ), scale );
for ( i = 0; i < arr.length; i++ ) {
console.log( arr[ i ] );
}