iterSomeBy

Test whether at least n iterated values pass a test implemented by a predicate function.

Usage

var iterSomeBy = require( '@stdlib/iter/some-by' );

iterSomeBy( iterator, n, predicate[, thisArg] )

Tests whether at least n iterated values pass 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 bool = iterSomeBy( arr, 4, predicate );
// returns true

If a provided iterator does not return any iterated values, the function returns false.

var array2iterator = require( '@stdlib/array/to-iterator' );

function predicate() {
    return true;
}

var bool = iterSomeBy( array2iterator( [] ), 1, predicate );
// returns false

A predicate function is provided two arguments:

  • value: iterated value
  • index: iteration index (zero-based)

To set the execution context of the predicate function, provide a thisArg.

var array2iterator = require( '@stdlib/array/to-iterator' );

function predicate( v ) {
    this.count += 1;
    return ( v > 0 );
}

var arr = array2iterator( [ 1, 1, 0, 1, 1 ] );

var ctx = {
    'count': 0
};

var bool = iterSomeBy( arr, 3, predicate, ctx );
// returns true

var n = ctx.count;
// returns 4

Notes

  • The function immediately returns upon encountering n truthy return values.

Examples

var randu = require( '@stdlib/random/iter/randu' );
var iterSomeBy = require( '@stdlib/iter/some-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 );

// Determine if at least 5 values exceed a threshold:
var bool = iterSomeBy( riter, 5, threshold );
// returns <boolean>

console.log( bool );
Did you find this page helpful?