# Iterators > Iterator utilities.
## Usage ```javascript var ns = require( '@stdlib/iter' ); ``` #### ns Namespace containing iterator utilities. ```javascript var objectKeys = require( '@stdlib/utils/keys' ); var keys = objectKeys( ns ); // e.g., returns [ 'iterAny', 'iterAnyBy', ... ] ```
- [`iterAdvance( iterator[, n] )`][@stdlib/iter/advance]: advance an iterator. - [`iterAnyBy( iterator, predicate[, thisArg] )`][@stdlib/iter/any-by]: test whether at least one iterated value passes a test implemented by a predicate function. - [`iterAny( iterator )`][@stdlib/iter/any]: test whether at least one iterated value is truthy. - [`iterConcat( iter0, ...iterator )`][@stdlib/iter/concat]: create an iterator which iterates over the values of two or more iterators. - [`iterConstant( value[, options] )`][@stdlib/iter/constant]: create an iterator which always returns the same value. - [`iterCounter( iterator )`][@stdlib/iter/counter]: create an iterator which iteratively computes the number of iterated values. - [`iterCuAnyBy( iterator, predicate[, thisArg] )`][@stdlib/iter/cuany-by]: create an iterator which cumulatively tests whether at least one iterated value passes a test implemented by a predicate function. - [`iterCuAny( iterator )`][@stdlib/iter/cuany]: create an iterator which cumulatively tests whether at least one iterated value is truthy. - [`iterCuEveryBy( iterator, predicate[, thisArg] )`][@stdlib/iter/cuevery-by]: create an iterator which cumulatively tests whether every iterated value passes a test implemented by a predicate function. - [`iterCuEvery( iterator )`][@stdlib/iter/cuevery]: create an iterator which cumulatively tests whether every iterated value is truthy. - [`iterCuNoneBy( iterator, predicate[, thisArg] )`][@stdlib/iter/cunone-by]: create an iterator which cumulatively tests whether every iterated value fails a test implemented by a predicate function. - [`iterCuNone( iterator )`][@stdlib/iter/cunone]: create an iterator which cumulatively tests whether every iterated value is falsy. - [`iterCuSomeBy( iterator, n, predicate[, thisArg] )`][@stdlib/iter/cusome-by]: create an iterator which cumulatively tests whether at least `n` iterated values pass a test implemented by a predicate function. - [`iterCuSome( iterator, n )`][@stdlib/iter/cusome]: create an iterator which cumulatively tests whether at least `n` iterated values are truthy. - [`iterDatespace( start, stop[, N][, options] )`][@stdlib/iter/datespace]: create an iterator which returns evenly spaced dates over a specified interval. - [`iterDedupeBy( iterator, [limit,] fcn )`][@stdlib/iter/dedupe-by]: create an iterator which removes consecutive values that resolve to the same value according to a provided function. - [`iterDedupe( iterator[, limit] )`][@stdlib/iter/dedupe]: create an iterator which removes consecutive duplicated values. - [`iterDoUntilEach( iterator, predicate, fcn[, thisArg] )`][@stdlib/iter/do-until-each]: create an iterator which, while a test condition is false, invokes a function for each iterated value before returning the iterated value. - [`iterDoWhileEach( iterator, predicate, fcn[, thisArg] )`][@stdlib/iter/do-while-each]: create an iterator which, while a test condition is true, invokes a function for each iterated value before returning the iterated value. - [`iterEmpty()`][@stdlib/iter/empty]: create an empty iterator. - [`iterEveryBy( iterator, predicate[, thisArg] )`][@stdlib/iter/every-by]: test whether every iterated value passes a test implemented by a predicate function. - [`iterEvery( iterator )`][@stdlib/iter/every]: test whether all iterated values are truthy. - [`iterFill( iterator, value[, begin[, end]] )`][@stdlib/iter/fill]: create an iterator which replaces all values from a provided iterator from a start index to an end index with a static value. - [`iterFilterMap( iterator, fcn[, thisArg] )`][@stdlib/iter/filter-map]: create an iterator which both filters and maps the values of another iterator. - [`iterFilter( iterator, predicate[, thisArg] )`][@stdlib/iter/filter]: create an iterator which filters the values of another iterator according to a predicate function. - [`iterFirst( iterator )`][@stdlib/iter/first]: return the first iterated value. - [`iterFlow( methods )`][@stdlib/iter/flow]: create a fluent interface for chaining together iterator methods. - [`iterForEach( iterator, fcn[, thisArg] )`][@stdlib/iter/for-each]: create an iterator which invokes a function for each iterated value before returning the iterated value. - [`iterHead( iterator, n )`][@stdlib/iter/head]: create an iterator which returns the first `n` values of a provided iterator. - [`iterIncrspace( start, stop[, increment] )`][@stdlib/iter/incrspace]: create an iterator which returns evenly spaced numbers according to a specified increment. - [`iterIntersectionByHash( iter0, ...iterator, hashFcn[, thisArg] )`][@stdlib/iter/intersection-by-hash]: create an iterator which returns the intersection of two or more iterators according to a hash function. - [`iterIntersection( iter0, ...iterator )`][@stdlib/iter/intersection]: create an iterator which returns the intersection of two or more iterators. - [`iterLast( iterator )`][@stdlib/iter/last]: consume an entire iterator and return the last iterated value. - [`iterLength( iterator )`][@stdlib/iter/length]: return an iterator's length. - [`iterLinspace( start, stop[, N] )`][@stdlib/iter/linspace]: create an iterator which returns evenly spaced numbers over a specified interval. - [`iterLogspace( start, stop[, N][, options] )`][@stdlib/iter/logspace]: create an iterator which returns evenly spaced numbers over a specified interval. - [`iterMap( iterator, fcn[, thisArg] )`][@stdlib/iter/map]: create an iterator which invokes a function for each iterated value. - [`iterMapN( iter0, ...iterator, fcn[, thisArg] )`][@stdlib/iter/mapn]: create an iterator which transforms iterated values from two or more iterators by applying the iterated values as arguments to a provided function. - [`iterNoneBy( iterator, predicate[, thisArg] )`][@stdlib/iter/none-by]: test whether every iterated value fails a test implemented by a predicate function. - [`iterNone( iterator )`][@stdlib/iter/none]: test whether all iterated values are falsy. - [`iterNth( iterator, n )`][@stdlib/iter/nth]: return the nth iterated value. - [`iterThunk( iterFcn[, ...args] )`][@stdlib/iter/pipeline-thunk]: create an iterator "thunk". - [`iterPipeline( iterFcn0[, ...iterFcn] )`][@stdlib/iter/pipeline]: create an iterator pipeline. - [`iterPop( iterator[, clbk[, thisArg]] )`][@stdlib/iter/pop]: create an iterator which skips the last value of a provided iterator. - [`iterPush( iterator, ...items )`][@stdlib/iter/push]: create an iterator which appends additional values to the end of a provided iterator. - [`iterReject( iterator, predicate[, thisArg] )`][@stdlib/iter/reject]: create an iterator which rejects the values of another iterator according to a predicate function. - [`iterReplicateBy( iterator, fcn[, thisArg] )`][@stdlib/iter/replicate-by]: create an iterator which replicates each iterated value according to a provided function. - [`iterReplicate( iterator, n )`][@stdlib/iter/replicate]: create an iterator which replicates each iterated value a specified number of times. - [`iterShift( iterator[, clbk[, thisArg]] )`][@stdlib/iter/shift]: create an iterator which skips the first value of a provided iterator. - [`iterSlice( iterator[, begin[, end]] )`][@stdlib/iter/slice]: create an iterator which returns a subsequence of iterated values from a provided iterator. - [`iterSomeBy( iterator, n, predicate[, thisArg] )`][@stdlib/iter/some-by]: test whether at least `n` iterated values pass a test implemented by a predicate function. - [`iterSome( iterator, n )`][@stdlib/iter/some]: test whether at least `n` iterated values are truthy. - [`iterStep( start, increment[, N] )`][@stdlib/iter/step]: create an iterator which returns a sequence of numbers according to a specified increment. - [`iterStridedBy( iterator, fcn[, offset[, eager]][, thisArg] )`][@stdlib/iter/strided-by]: create an iterator which steps according to a provided callback function. - [`iterStrided( iterator, stride[, offset[, eager]] )`][@stdlib/iter/strided]: create an iterator which steps by a specified amount. - [`iterator2arrayviewRight( iterator, dest[, begin[, end]][, mapFcn[, thisArg]] )`][@stdlib/iter/to-array-view-right]: fill an array-like object view from right to left with values returned from an iterator. - [`iterator2arrayview( iterator, dest[, begin[, end]][, mapFcn[, thisArg]] )`][@stdlib/iter/to-array-view]: fill an array-like object view with values returned from an iterator. - [`iterUnion( iter0, ...iterator )`][@stdlib/iter/union]: create an iterator which returns the union of two or more iterators. - [`iterUniqueByHash( iterator, hashFcn[, thisArg] )`][@stdlib/iter/unique-by-hash]: create an iterator which returns unique values according to a hash function. - [`iterUniqueBy( iterator, predicate[, thisArg] )`][@stdlib/iter/unique-by]: create an iterator which returns unique values according to a predicate function. - [`iterUnique( iterator )`][@stdlib/iter/unique]: create an iterator which returns unique values. - [`iterUnitspace( start[, stop] )`][@stdlib/iter/unitspace]: create an iterator which returns numbers incremented by `1`. - [`iterUnshift( iterator, ...items )`][@stdlib/iter/unshift]: create an iterator which prepends values to the beginning of a provided iterator. - [`iterUntilEach( iterator, predicate, fcn[, thisArg] )`][@stdlib/iter/until-each]: create an iterator which, while a test condition is false, invokes a function for each iterated value before returning the iterated value. - [`iterWhileEach( iterator, predicate, fcn[, thisArg] )`][@stdlib/iter/while-each]: create an iterator which, while a test condition is true, invokes a function for each iterated value before returning the iterated value.
## Examples ```javascript var objectKeys = require( '@stdlib/utils/keys' ); var uncapitalize = require( '@stdlib/string/uncapitalize' ); var replace = require( '@stdlib/string/replace' ); var contains = require( '@stdlib/assert/contains' ); var randu = require( '@stdlib/random/iter/randu' ); var ns = require( '@stdlib/iter' ); // Create a fluent interface for chaining together iterator operations... // Retrieve all the iterator utility names: var keys = objectKeys( ns ); // Define a list of utilities to exclude from the fluent API: var exclude = [ 'iterFlow', 'iterPipeline', 'iterThunk' ]; // Map each utility name to a fluent interface method... var methods = {}; var key; var k; var i; for ( i = 0; i < keys.length; i++ ) { key = keys[ i ]; if ( contains( exclude, key ) ) { continue; } k = uncapitalize( replace( key, /^iter/, '' ) ); methods[ k ] = ns[ key ]; } // Create a fluent interface: var FluentIterator = ns.iterFlow( methods ); // Create a new fluent interface iterator: var it1 = new FluentIterator( randu() ); // Define a predicate function for filtering values: function predicate( v ) { return ( v > 0.25 && v < 0.75 ); } // Define a function which transforms iterated values: function transform( v ) { return v * 10.0; } // Define a function to be invoked for each iterated value: function log( v ) { console.log( v ); } // Chain together a sequence of operations: var it2 = it1.filter( predicate ) .map( transform ) .head( 10 ) .forEach( log ); // Perform manual iteration... var v; while ( true ) { v = it2.next(); if ( v.done ) { break; } } ```