Loading Please Wait...

Logo Lynxsia IT Solutions

JavaScript Object Iterables

JS Object Iterables

Iterable objects are objects that can be iterated over with for..of.

Technically, iterables must implement the Symbol.iterator method.

Iterating Over a String

You can use a for..of loop to iterate over the elements of a string.

					 
        
          for (const x of "Lynxsia") {
            // code block to be executed
          }
        
      
Iterating Over an Array

You can use a for..of loop to iterate over the elements of an Array.

					 
        
          for (const x of [1,2,3,4,5]) {
            // code block to be executed
          }
        
      
JavaScript Iterators

The iterator protocol defines how to produce a sequence of values from an object.

An object becomes an iterator when it implements a next() method.

The next() method must return an object with two properties.

  • value: The value returned by the iterator (Can be omitted if done is true)
  • done: true if the iterator has completed. false if the iterator has produced a new value
Home Made Iterable

This iterable returns never ending: 10,20,30,40,.... Everytime next() is called.

					 
        
          // Home Made Iterable
          function myNumbers() {
            let n = 0;
            return {
              next: function() {
                n += 10;
                return {value:n, done:false};
              }
            };
          }

          // Create Iterable
          const n = myNumbers();
          n.next(); // Returns 10
          n.next(); // Returns 20
          n.next(); // Returns 30
        
      
The problem with a home made iterable is that it does not support the JavaScript for..of statement.

A JavaScript iterable is an object that has a Symbol.iterator.

The Symbol.iterator is a function that returns a next() function.

An iterable can be iterated over with the code: for (const x of iterable) { }

					 
        
          // Create an Object
          myNumbers = {};

          // Make it Iterable
          myNumbers[Symbol.iterator] = function() {
            let n = 0;
            done = false;
            return {
              next() {
                n += 10;
                if (n == 100) {done = true}
                return {value:n, done:done};
              }
            };
          }
        
      

Now you can use for..of.

					 
        
          for (const num of myNumbers) {
            // Any Code Here
          }
        
      

The Symbol.iterator method is called automatically by for..of. But we can also do it "manually"

					 
        
          let iterator = myNumbers[Symbol.iterator]();

          while (true) {
            const result = iterator.next();
            if (result.done) break;
            // Any Code Here
          }
        
      

How you feel about this blog:

Share this blog on:

Report Us

If you find any error in the turtorials, or want to share your suggestion/feedback, feel free to send us email at: info@lynxsia.com

Contact Us
Ads
Logo
Lynxsia IT Solutions

We are concern with various development process like website design & development, E-commerce development, Software development, Application development, SMS & Bulk SMS Provider, PWA Development, and many more..

Kotwali Road, Chhiptehri, Banda, 210001, UP, India

Copyright © 2022, Lynxsia IT Solutions, All rights reserved