@stdlib/iter-cusome-by
v0.1.1
Published
Create an iterator which cumulatively tests whether at least `n` iterated values pass a test implemented by a predicate function.
Readme
iterCuSomeBy
Create an iterator which cumulatively tests whether at least
niterated values pass a test implemented by a predicate function.
Installation
npm install @stdlib/iter-cusome-byUsage
var iterCuSomeBy = require( '@stdlib/iter-cusome-by' );iterCuSomeBy( iterator, n, predicate[, thisArg] )
Returns an iterator which cumulatively tests whether at least n iterated values pass a test implemented by a predicate function.
var array2iterator = require( '@stdlib/array-to-iterator' );
function isPositive( v ) {
return ( v > 0 );
}
var arr = array2iterator( [ 0, 0, 0, 1, 1 ] );
var it = iterCuSomeBy( arr, 2, isPositive );
var v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns true
var bool = it.next().done;
// returns trueThe 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
valueproperty and adoneproperty having abooleanvalue 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 arr = array2iterator( [ 0, 0, 1, 1, 1 ] );
var ctx = {
'count': 0
};
var it = iterCuSomeBy( arr, 3, predicate, ctx );
// returns <Object>
var v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns false
v = it.next().value;
// returns true
var count = ctx.count;
// returns 5Notes
- A
predicatefunction is invoked for each iterated value until thenthtruthypredicatefunction return value. The returned iterator continues iterating until it reaches the end of the input iterator, even after the condition is met.
Examples
var randu = require( '@stdlib/random-iter-randu' );
var iterCuSomeBy = require( '@stdlib/iter-cusome-by' );
function threshold( r ) {
return ( r > 0.95 );
}
// Create an iterator which generates uniformly distributed pseudorandom numbers:
var opts = {
'iter': 100
};
var riter = randu( opts );
// Create an iterator which tracks whether at least two values have exceeded the threshold:
var it = iterCuSomeBy( riter, 2, threshold );
// Perform manual iteration...
var r;
while ( true ) {
r = it.next();
if ( r.done ) {
break;
}
console.log( r.value );
}Notice
This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.
Community
License
See LICENSE.
Copyright
Copyright © 2016-2026. The Stdlib Authors.
