iterCuEveryBy
Create an iterator which cumulatively tests whether every iterated value passes a test implemented by a predicate function.
Usage
var iterCuEveryBy = require( '@stdlib/iter/cuevery-by' );
iterCuEveryBy( iterator, predicate[, thisArg] )
Returns an iterator which cumulatively tests whether every iterated value passes a test implemented by a predicate
function.
var array2iterator = require( '@stdlib/array/to-iterator' );
function predicate( v ) {
return ( v > 0 );
}
var arr = array2iterator( [ 1, 1, 1, 0, 1 ] );
var it = iterCuEveryBy( arr, predicate );
var v = it.next().value;
// returns true
v = it.next().value;
// returns true
v = it.next().value;
// returns true
v = it.next().value;
// returns false
v = it.next().value;
// returns false
var bool = it.next().done;
// returns true
The returned iterator protocol-compliant object has the following properties:
- next: function which returns an iterator protocol-compliant object containing the next iterated value (if one exists) assigned to a
value
property and adone
property having aboolean
value indicating whether the iterator is finished. - return: function which closes an iterator and returns a single (optional) argument in an iterator protocol-compliant object.
A predicate
function is provided two arguments:
- value: iterated value
- index: iteration index (zero-based)
To set the predicate
function execution context, provide a thisArg
.
var array2iterator = require( '@stdlib/array/to-iterator' );
function predicate( v ) {
this.count += 1;
return ( v > 0 );
}
var ctx = {
'count': 0
};
var it = iterCuEveryBy( array2iterator( [ 1, 2, 3, 4 ] ), predicate, ctx );
// returns <Object>
var v = it.next().value;
// returns true
v = it.next().value;
// returns true
v = it.next().value;
// returns true
v = it.next().value;
// returns true
var count = ctx.count;
// returns 4
Notes
- A
predicate
function is invoked for each iterated value until the first falsypredicate
function return value. Upon encountering the first falsy return value, the returned iterator ceases to invoke thepredicate
function and returnsfalse
for each subsequent iterated value of the provided inputiterator
.
Examples
var randu = require( '@stdlib/random/iter/randu' );
var iterCuEveryBy = require( '@stdlib/iter/cuevery-by' );
function threshold( r ) {
return ( r > 0.05 );
}
// Create an iterator which generates uniformly distributed pseudorandom numbers:
var opts = {
'iter': 100
};
var riter = randu( opts );
// Create an iterator which cumulatively tests whether every iterated value passes a test:
var it = iterCuEveryBy( riter, threshold );
// Perform manual iteration...
var r;
while ( true ) {
r = it.next();
if ( r.done ) {
break;
}
console.log( r.value );
}