Iterator methods
Iterator helpers add map(), filter(), take(), drop(), reduce(), and related methods directly to iterators. They enable lazy pipelines without converting everything to arrays first.
Overview
Iterator helpers add map(), filter(), take(), drop(), reduce(), and related methods directly to iterators. They enable lazy pipelines without converting everything to arrays first.
Browser support
| Feature | Desktop | Mobile | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 122 | 122 | 131 | 18.4 | 122 | 18.4 | |
| Built-in object | ||||||
| The drop() method of Iterator instances returns a new iterator helper object that skips the given number of elements at the start of this iterator. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The every() method of Iterator instances is similar to Array.prototype.every(): it returns false if it finds an element that does not satisfy the provided testing function. Otherwise, if the iterator is exhausted without finding such an element, it returns true. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The filter() method of Iterator instances returns a new iterator helper object that yields only those elements of the iterator for which the provided callback function returns true. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The find() method of Iterator instances is similar to Array.prototype.find(): it returns the first element produced by the iterator that satisfies the provided testing function. If no values satisfy the testing function, undefined is returned. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The flatMap() method of Iterator instances returns a new iterator helper object that takes each element in the original iterator, runs it through a mapping function, and yields elements returned by the mapping function (which are contained in another iterator or iterable). | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The forEach() method of Iterator instances is similar to Array.prototype.forEach(): it executes a provided function once for each element produced by the iterator. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The Iterator.from() static method creates a new Iterator object from an iterator or iterable object. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The map() method of Iterator instances returns a new iterator helper object that yields elements of the iterator, each transformed by a mapping function. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The reduce() method of Iterator instances is similar to Array.prototype.reduce: it executes a user-supplied "reducer" callback function on each element produced by the iterator, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements is a single value. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The some() method of Iterator instances is similar to Array.prototype.some(): it returns true if it finds an element that satisfies the provided testing function. Otherwise, if the iterator is exhausted without finding such an element, it returns false. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The take() method of Iterator instances returns a new iterator helper object that yields the given number of elements in this iterator and then terminates. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
| The toArray() method of Iterator instances creates a new Array instance populated with the elements yielded from the iterator. | 122 | 122 | 131 | 18.4 | 122 | 18.4 |
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
- This feature was removed in a later browser version (119)
Syntax
function* naturals() {
let n = 1;
while (true) yield n++;
}
// The first 5 even numbers from 1 to 100
const result = naturals()
.filter(n => n % 2 === 0)
.take(5)
.toArray();
// [2, 4, 6, 8, 10] Live demo
Use cases
Streaming transformations
Process generated or streamed data incrementally instead of materializing every intermediate array.
Composable pipelines
Chain small iterator operations to keep data processing readable and memory efficient.
Cautions
- Iterator results are consumed as you iterate, so do not assume you can reuse the same pipeline repeatedly.
- This feature is newer than classic array methods, so compatibility checks still matter.
Accessibility
- Lazy data processing can improve responsiveness in large interfaces, which helps users keep context while content updates.
Related links
Powered by web-features