In JavaScript, Iterables are structures that allow us to iterate over the elements of an object sequentially. This structure is similar to an array in that it connects elements together, but unlike an array, it can be used in a broader range of scenarios.
Iterable and Iterator Concepts
An Iterable is a feature that indicates whether an object is iterable. Iterable objects have the Symbol.iterator
property, which must return an iterator object. An iterator allows us to iterate forward over an iterable. This iterator object enables access to each element sequentially using the next()
method.
Example Code Blocks:
// Creating an Array Iterable
const numbers = [1, 2, 3, 4, 5];
// Checking if it is iterable
console.log(typeof numbers[Symbol.iterator]); // function
// Creating an iterator
const iterator = numbers[Symbol.iterator]();
// Iterating with the iterator
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: 4, done: false }
console.log(iterator.next()); // { value: 5, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
In the above code block, we created an array and checked its iterability. Then, we created an iterator using the array’s Symbol.iterator
property, and with this iterator, we accessed each element of the array sequentially.
// Creating a custom iterable
const myIterable = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
// Creating an iterator
const myIterator = myIterable[Symbol.iterator]();
// Iterating with the iterator
console.log(myIterator.next()); // { value: 1, done: false }
console.log(myIterator.next()); // { value: 2, done: false }
console.log(myIterator.next()); // { value: 3, done: false }
console.log(myIterator.next()); // { value: undefined, done: true }
In this example, we created a custom iterable object and used a generator function to iterate over it. The generator function is marked with an asterisk (*) and contains yield
statements. This allows us to return each value with the yield
expression while iterating over myIterable
.
Conclusion
In JavaScript, Iterables and Iterators enable efficient iteration over objects. These structures can be used in a variety of data structures and collections, simplifying iteration operations.