1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
{{alias}}( iter0, ...iterator, hashFcn[, thisArg] )
Returns an iterator which returns the intersection of two or more iterators
according to a hash function.
An iterated value is considered "unique" if the hash function returns a
unique hash value for that iterated value. Beware that this *may* result in
unexpected behavior. Namely, only the first iterated value mapping to a
particular hash function result is returned, even if subsequent values,
while mapping to the same hash, are different. Accordingly, iteration order
*does* matter.
A returned iterator internally buffers unique hashes, along with the *first*
iterated value resolving to a hash, and, thus, has O(N) memory requirements,
where `N` is the length of the first iterator.
Do *not* provide iterators having infinite length.
If an environment supports Symbol.iterator and all provided iterators are
iterable, the returned iterator is iterable.
Parameters
----------
iter0: Object
Input iterator.
iterator: ...Object
Input iterators.
hashFcn: Function
Hash function.
thisArg: any (optional)
Execution context.
Returns
-------
iterator: Object
Iterator.
iterator.next(): Function
Returns an iterator protocol-compliant object containing the next
iterated value (if one exists) and a boolean flag indicating whether the
iterator is finished.
iterator.return( [value] ): Function
Finishes an iterator and returns a provided value.
Examples
--------
> var it1 = {{alias:@stdlib/array/to-iterator}}( [ 1, 2, 1, 2, 4 ] );
> var it2 = {{alias:@stdlib/array/to-iterator}}( [ 1, 2, 5, 2, 3 ] );
> function f( v ) { return v.toString(); };
> var it = {{alias}}( it1, it2, f );
> var v = it.next().value
1
> v = it.next().value
2
> var bool = it.next().done
true
See Also
--------
|